1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/logging.h"
6 #include "ui/gfx/screen.h"
7 #include "ui/gfx/screen_type_delegate.h"
13 Screen
* g_screen_
[SCREEN_TYPE_LAST
+ 1];
14 ScreenTypeDelegate
* g_screen_type_delegate_
= NULL
;
25 Screen
* Screen::GetScreenFor(NativeView view
) {
26 ScreenType type
= SCREEN_TYPE_NATIVE
;
27 if (g_screen_type_delegate_
)
28 type
= g_screen_type_delegate_
->GetScreenTypeForNativeView(view
);
29 if (type
== SCREEN_TYPE_NATIVE
)
30 return GetNativeScreen();
31 DCHECK(g_screen_
[type
]);
32 return g_screen_
[type
];
36 void Screen::SetScreenInstance(ScreenType type
, Screen
* instance
) {
37 DCHECK_LE(type
, SCREEN_TYPE_LAST
);
38 g_screen_
[type
] = instance
;
42 Screen
* Screen::GetScreenByType(ScreenType type
) {
43 return g_screen_
[type
];
47 void Screen::SetScreenTypeDelegate(ScreenTypeDelegate
* delegate
) {
48 g_screen_type_delegate_
= delegate
;
52 Screen
* Screen::GetNativeScreen() {
53 if (!g_screen_
[SCREEN_TYPE_NATIVE
])
54 g_screen_
[SCREEN_TYPE_NATIVE
] = CreateNativeScreen();
55 return g_screen_
[SCREEN_TYPE_NATIVE
];