| Index: ui/keyboard/webui/vk_webui_controller.cc
|
| diff --git a/athena/virtual_keyboard/vk_webui_controller.cc b/ui/keyboard/webui/vk_webui_controller.cc
|
| similarity index 63%
|
| rename from athena/virtual_keyboard/vk_webui_controller.cc
|
| rename to ui/keyboard/webui/vk_webui_controller.cc
|
| index d26b2c94d3eaef7c854fb6cb9c82cad64f54c5f4..2e0138ba0b7814eb9185f1f167d2ab6b4d6a63da 100644
|
| --- a/athena/virtual_keyboard/vk_webui_controller.cc
|
| +++ b/ui/keyboard/webui/vk_webui_controller.cc
|
| @@ -2,35 +2,40 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "athena/virtual_keyboard/vk_webui_controller.h"
|
| +#include "ui/keyboard/webui/vk_webui_controller.h"
|
|
|
| -#include "athena/virtual_keyboard/vk_message_handler.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/stringprintf.h"
|
| +#include "content/public/browser/render_frame_host.h"
|
| +#include "content/public/browser/render_view_host.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "content/public/browser/web_ui_data_source.h"
|
| +#include "content/public/common/service_registry.h"
|
| #include "grit/keyboard_resources.h"
|
| #include "grit/keyboard_resources_map.h"
|
| +#include "mojo/public/cpp/bindings/interface_impl.h"
|
| +#include "mojo/public/cpp/system/core.h"
|
| #include "ui/keyboard/keyboard_constants.h"
|
| #include "ui/keyboard/keyboard_util.h"
|
| +#include "ui/keyboard/webui/vk_mojo_handler.h"
|
|
|
| -namespace athena {
|
| +namespace keyboard {
|
|
|
| namespace {
|
|
|
| content::WebUIDataSource* CreateKeyboardUIDataSource() {
|
| content::WebUIDataSource* source =
|
| - content::WebUIDataSource::Create(keyboard::kKeyboardHost);
|
| + content::WebUIDataSource::Create(kKeyboardHost);
|
|
|
| size_t count = 0;
|
| - const GritResourceMap* resources =
|
| - keyboard::GetKeyboardExtensionResources(&count);
|
| + const GritResourceMap* resources = GetKeyboardExtensionResources(&count);
|
| source->SetDefaultResource(IDR_KEYBOARD_INDEX);
|
|
|
| - const std::string keyboard_host =
|
| - base::StringPrintf("%s/", keyboard::kKeyboardHost);
|
| + const std::string keyboard_host = base::StringPrintf("%s/", kKeyboardHost);
|
| for (size_t i = 0; i < count; ++i) {
|
| size_t offset = 0;
|
| + // The webui URL needs to skip the 'keyboard/' at the front of the resource
|
| + // names, since it is part of the data-source name.
|
| if (StartsWithASCII(std::string(resources[i].name), keyboard_host, false))
|
| offset = keyboard_host.length();
|
| source->AddResourcePath(resources[i].name + offset, resources[i].value);
|
| @@ -44,23 +49,36 @@ content::WebUIDataSource* CreateKeyboardUIDataSource() {
|
| // VKWebUIController:
|
|
|
| VKWebUIController::VKWebUIController(content::WebUI* web_ui)
|
| - : WebUIController(web_ui) {
|
| + : WebUIController(web_ui), weak_factory_(this) {
|
| content::BrowserContext* browser_context =
|
| web_ui->GetWebContents()->GetBrowserContext();
|
| - web_ui->AddMessageHandler(new VKMessageHandler());
|
| content::WebUIDataSource::Add(browser_context, CreateKeyboardUIDataSource());
|
| + content::WebUIDataSource::AddMojoDataSource(browser_context)->AddResourcePath(
|
| + "ui/keyboard/webui/keyboard.mojom", IDR_KEYBOARD_MOJO_GEN_JS);
|
| }
|
|
|
| VKWebUIController::~VKWebUIController() {
|
| }
|
|
|
| +void VKWebUIController::RenderViewCreated(content::RenderViewHost* host) {
|
| + host->GetMainFrame()->GetServiceRegistry()->AddService<KeyboardUIHandlerMojo>(
|
| + base::Bind(&VKWebUIController::CreateAndStoreUIHandler,
|
| + weak_factory_.GetWeakPtr()));
|
| +}
|
| +
|
| +void VKWebUIController::CreateAndStoreUIHandler(
|
| + mojo::InterfaceRequest<KeyboardUIHandlerMojo> request) {
|
| + ui_handler_ = scoped_ptr<VKMojoHandler>(
|
| + mojo::WeakBindToRequest(new VKMojoHandler(), &request));
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // VKWebUIControllerFactory:
|
|
|
| content::WebUI::TypeID VKWebUIControllerFactory::GetWebUIType(
|
| content::BrowserContext* browser_context,
|
| const GURL& url) const {
|
| - if (url == GURL(keyboard::kKeyboardURL))
|
| + if (url == GURL(kKeyboardURL))
|
| return const_cast<VKWebUIControllerFactory*>(this);
|
|
|
| return content::WebUI::kNoWebUI;
|
| @@ -81,7 +99,7 @@ bool VKWebUIControllerFactory::UseWebUIBindingsForURL(
|
| content::WebUIController* VKWebUIControllerFactory::CreateWebUIControllerForURL(
|
| content::WebUI* web_ui,
|
| const GURL& url) const {
|
| - if (url == GURL(keyboard::kKeyboardURL))
|
| + if (url == GURL(kKeyboardURL))
|
| return new VKWebUIController(web_ui);
|
| return NULL;
|
| }
|
| @@ -98,4 +116,4 @@ VKWebUIControllerFactory::VKWebUIControllerFactory() {
|
| VKWebUIControllerFactory::~VKWebUIControllerFactory() {
|
| }
|
|
|
| -} // namespace athena
|
| +} // namespace keyboard
|
|
|