- add sources.
[platform/framework/web/crosswalk.git] / src / ui / views / focus / focus_manager_factory.cc
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