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. 4 5 #include "base/logging.h" 6 #include "ui/gfx/screen.h" 7 #include "ui/gfx/screen_type_delegate.h" 8 9 namespace gfx { 10 11 namespace { 12 13 Screen* g_screen_[SCREEN_TYPE_LAST + 1]; 14 ScreenTypeDelegate* g_screen_type_delegate_ = NULL; 15 16 } // namespace 17 18 Screen::Screen() { 19 } 20 21 Screen::~Screen() { 22 } 23 24 // static 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]; 33 } 34 35 // static 36 void Screen::SetScreenInstance(ScreenType type, Screen* instance) { 37 DCHECK_LE(type, SCREEN_TYPE_LAST); 38 g_screen_[type] = instance; 39 } 40 41 // static 42 Screen* Screen::GetScreenByType(ScreenType type) { 43 return g_screen_[type]; 44 } 45 46 // static 47 void Screen::SetScreenTypeDelegate(ScreenTypeDelegate* delegate) { 48 g_screen_type_delegate_ = delegate; 49 } 50 51 // static 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]; 56 } 57 58 } // namespace gfx 59