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