Index: ui/gfx/screen.cc |
diff --git a/ui/gfx/screen.cc b/ui/gfx/screen.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..305dbff9d2f106f3961df3fa19dc354ec059686a |
--- /dev/null |
+++ b/ui/gfx/screen.cc |
@@ -0,0 +1,48 @@ |
+// Copyright 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/logging.h" |
+#include "ui/gfx/screen.h" |
+#include "ui/gfx/screen_type_delegate.h" |
+ |
+namespace gfx { |
+ |
+Screen* g_screen_[SCREEN_TYPE_LAST + 1]; |
oshima
2012/10/10 17:58:23
put these global into anonymous namespace.
scottmg
2012/10/10 19:04:47
Done.
|
+ScreenTypeDelegate* g_screen_type_delegate_; |
oshima
2012/10/10 17:58:23
= NULL;
Strictly speaking, this isn't necessary,
scottmg
2012/10/10 19:04:47
Done.
|
+ |
+Screen::Screen() { |
+} |
+ |
+Screen::~Screen() { |
+} |
+ |
+// static |
+Screen* Screen::GetScreenFor(NativeView view) { |
+ ScreenType type = SCREEN_TYPE_NATIVE; |
+ if (g_screen_type_delegate_) |
+ type = g_screen_type_delegate_->GetScreenTypeForNativeView(view); |
+ if (type == SCREEN_TYPE_NATIVE) |
+ return GetNativeScreen(); |
+ DCHECK(g_screen_[type]); |
+ return g_screen_[type]; |
+} |
+ |
+// static |
+void Screen::SetScreenInstance(ScreenType type, Screen* instance) { |
oshima
2012/10/10 17:58:23
DCHECK_LE(type, SCREEN_TYPE_LAST);
scottmg
2012/10/10 19:04:47
Done.
|
+ g_screen_[type] = instance; |
+} |
+ |
+// static |
+void Screen::SetScreenTypeDelegate(ScreenTypeDelegate* delegate) { |
+ g_screen_type_delegate_ = delegate; |
+} |
+ |
+// static |
+Screen* Screen::GetNativeScreen() { |
+ if (!g_screen_[SCREEN_TYPE_NATIVE]) |
+ g_screen_[SCREEN_TYPE_NATIVE] = CreateNativeScreen(); |
+ return g_screen_[SCREEN_TYPE_NATIVE]; |
+} |
+ |
+} |