• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:
DefaultFocusManagerFactory()16   DefaultFocusManagerFactory() : FocusManagerFactory() {}
~DefaultFocusManagerFactory()17   virtual ~DefaultFocusManagerFactory() {}
18 
19  protected:
CreateFocusManager(Widget * widget,bool desktop_widget)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 
FocusManagerFactory()33 FocusManagerFactory::FocusManagerFactory() {
34 }
35 
~FocusManagerFactory()36 FocusManagerFactory::~FocusManagerFactory() {
37 }
38 
39 // static
Create(Widget * widget,bool desktop_widget)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
Install(FocusManagerFactory * f)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