1 // Copyright (c) 2013 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/keyboard/keyboard.h"
7 #include "base/files/file_path.h"
8 #include "base/memory/singleton.h"
9 #include "base/path_service.h"
10 #include "content/public/browser/browser_context.h"
11 #include "content/public/browser/web_ui_controller_factory.h"
12 #include "ui/base/resource/resource_bundle.h"
13 #include "ui/keyboard/keyboard_constants.h"
14 #include "ui/keyboard/keyboard_ui_controller.h"
19 using content::BrowserContext
;
21 using content::WebUIController
;
23 class KeyboardWebUIControllerFactory
: public content::WebUIControllerFactory
{
25 // |WebUIControllerFactory| implementation:
26 virtual content::WebUI::TypeID
GetWebUIType(
27 content::BrowserContext
* browser_context
,
28 const GURL
& url
) const OVERRIDE
{
29 if (url
== GURL(keyboard::kKeyboardWebUIURL
))
30 return const_cast<KeyboardWebUIControllerFactory
*>(this);
32 return WebUI::kNoWebUI
;
34 virtual bool UseWebUIForURL(content::BrowserContext
* browser_context
,
35 const GURL
& url
) const OVERRIDE
{
36 return GetWebUIType(browser_context
, url
) != WebUI::kNoWebUI
;
38 virtual bool UseWebUIBindingsForURL(content::BrowserContext
* browser_context
,
39 const GURL
& url
) const OVERRIDE
{
40 return UseWebUIForURL(browser_context
, url
);
42 virtual content::WebUIController
* CreateWebUIControllerForURL(
43 content::WebUI
* web_ui
,
44 const GURL
& url
) const OVERRIDE
{
45 if (url
== GURL(keyboard::kKeyboardWebUIURL
))
46 return new keyboard::KeyboardUIController(web_ui
);
50 static KeyboardWebUIControllerFactory
* GetInstance() {
51 return Singleton
<KeyboardWebUIControllerFactory
>::get();
55 KeyboardWebUIControllerFactory() {}
56 virtual ~KeyboardWebUIControllerFactory() {}
59 friend struct DefaultSingletonTraits
<KeyboardWebUIControllerFactory
>;
61 DISALLOW_COPY_AND_ASSIGN(KeyboardWebUIControllerFactory
);
68 void InitializeKeyboard() {
69 static bool initialized
= false;
74 base::FilePath pak_dir
;
75 PathService::Get(base::DIR_MODULE
, &pak_dir
);
76 base::FilePath pak_file
= pak_dir
.Append(
77 FILE_PATH_LITERAL("keyboard_resources.pak"));
78 ui::ResourceBundle::GetSharedInstance().AddDataPackFromPath(
79 pak_file
, ui::SCALE_FACTOR_100P
);
81 content::WebUIControllerFactory::RegisterFactory(
82 KeyboardWebUIControllerFactory::GetInstance());
85 } // namespace keyboard