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.
5 #include "ui/views/focus/focus_manager_factory.h"
7 #include "base/compiler_specific.h"
8 #include "ui/views/focus/focus_manager.h"
14 class DefaultFocusManagerFactory
: public FocusManagerFactory
{
16 DefaultFocusManagerFactory() : FocusManagerFactory() {}
17 virtual ~DefaultFocusManagerFactory() {}
20 virtual FocusManager
* CreateFocusManager(Widget
* widget
,
21 bool desktop_widget
) OVERRIDE
{
22 return new FocusManager(widget
, NULL
/* delegate */);
26 DISALLOW_COPY_AND_ASSIGN(DefaultFocusManagerFactory
);
29 FocusManagerFactory
* focus_manager_factory
= NULL
;
33 FocusManagerFactory::FocusManagerFactory() {
36 FocusManagerFactory::~FocusManagerFactory() {
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
);
48 void FocusManagerFactory::Install(FocusManagerFactory
* f
) {
49 if (f
== focus_manager_factory
)
51 delete focus_manager_factory
;
52 focus_manager_factory
= f
? f
: new DefaultFocusManagerFactory();