Index: ui/gfx/screen.cc |
diff --git a/ui/gfx/screen.cc b/ui/gfx/screen.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..297c7616b9f87ebd55b1bba9dd89ab429ef51706 |
--- /dev/null |
+++ b/ui/gfx/screen.cc |
@@ -0,0 +1,53 @@ |
+// 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_[gfx::SCREEN_TYPE_LAST + 1]; |
+gfx::ScreenTypeDelegate* g_screen_type_delegate_ = NULL; |
+ |
+} // namespace |
oshima
2012/10/10 20:08:39
We usually put anonymous namespace nested. That wa
scottmg
2012/10/10 20:52:01
Done.
|
+ |
+namespace gfx { |
+ |
+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) { |
+ DCHECK_LE(type, SCREEN_TYPE_LAST); |
+ 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]; |
+} |
+ |
+} |
oshima
2012/10/10 20:08:39
// namespace gfx
scottmg
2012/10/10 20:52:01
Done.
|