1 // Copyright (c) 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 "ui/views/focus/focus_manager_factory.h" 6 7 #include "base/compiler_specific.h" 8 #include "ui/views/focus/focus_manager.h" 9 10 namespace views { 11 12 namespace { 13 14 class DefaultFocusManagerFactory : public FocusManagerFactory { 15 public: 16 DefaultFocusManagerFactory() : FocusManagerFactory() {} 17 virtual ~DefaultFocusManagerFactory() {} 18 19 protected: 20 virtual FocusManager* CreateFocusManager(Widget* widget, 21 bool desktop_widget) OVERRIDE { 22 return new FocusManager(widget, NULL /* delegate */); 23 } 24 25 private: 26 DISALLOW_COPY_AND_ASSIGN(DefaultFocusManagerFactory); 27 }; 28 29 FocusManagerFactory* focus_manager_factory = NULL; 30 31 } // namespace 32 33 FocusManagerFactory::FocusManagerFactory() { 34 } 35 36 FocusManagerFactory::~FocusManagerFactory() { 37 } 38 39 // static 40 FocusManager* FocusManagerFactory::Create(Widget* widget, 41 bool desktop_widget) { 42 if (!focus_manager_factory) 43 focus_manager_factory = new DefaultFocusManagerFactory(); 44 return focus_manager_factory->CreateFocusManager(widget, desktop_widget); 45 } 46 47 // static 48 void FocusManagerFactory::Install(FocusManagerFactory* f) { 49 if (f == focus_manager_factory) 50 return; 51 delete focus_manager_factory; 52 focus_manager_factory = f ? f : new DefaultFocusManagerFactory(); 53 } 54 55 } // namespace views 56