blob: 457f60b7cc1a1e9c1120a94fe6e017dd576cee36 [file] [log] [blame]
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "views/focus/focus_manager_factory.h"
#include "base/compiler_specific.h"
#include "views/focus/focus_manager.h"
namespace {
using views::FocusManager;
class DefaultFocusManagerFactory : public views::FocusManagerFactory {
public:
DefaultFocusManagerFactory() : views::FocusManagerFactory() {}
virtual ~DefaultFocusManagerFactory() {}
protected:
virtual FocusManager* CreateFocusManager(views::Widget* widget) OVERRIDE {
return new FocusManager(widget);
}
private:
DISALLOW_COPY_AND_ASSIGN(DefaultFocusManagerFactory);
};
views::FocusManagerFactory* focus_manager_factory = NULL;
} // namespace
namespace views {
FocusManagerFactory::FocusManagerFactory() {
}
FocusManagerFactory::~FocusManagerFactory() {
}
// static
FocusManager* FocusManagerFactory::Create(Widget* widget) {
if (!focus_manager_factory)
focus_manager_factory = new DefaultFocusManagerFactory();
return focus_manager_factory->CreateFocusManager(widget);
}
// static
void FocusManagerFactory::Install(FocusManagerFactory* f) {
if (f == focus_manager_factory)
return;
delete focus_manager_factory;
focus_manager_factory = f ? f : new DefaultFocusManagerFactory();
}
} // namespace views