| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef IOS_CHROME_BROWSER_UI_WEBUI_MOJO_WEB_UI_IOS_CONTROLLER_H_ | 5 #ifndef IOS_CHROME_BROWSER_UI_WEBUI_MOJO_WEB_UI_IOS_CONTROLLER_H_ |
| 6 #define IOS_CHROME_BROWSER_UI_WEBUI_MOJO_WEB_UI_IOS_CONTROLLER_H_ | 6 #define IOS_CHROME_BROWSER_UI_WEBUI_MOJO_WEB_UI_IOS_CONTROLLER_H_ |
| 7 | 7 |
| 8 #import "ios/web/public/web_state/web_state.h" | 8 #import "ios/web/public/web_state/web_state.h" |
| 9 #include "ios/web/public/webui/web_ui_ios.h" | 9 #include "ios/web/public/webui/web_ui_ios.h" |
| 10 #include "ios/web/public/webui/web_ui_ios_controller.h" | 10 #include "ios/web/public/webui/web_ui_ios_controller.h" |
| 11 #include "services/service_manager/public/cpp/interface_factory.h" | 11 #include "services/service_manager/public/cpp/interface_factory.h" |
| 12 #include "services/service_manager/public/cpp/interface_registry.h" | 12 #include "services/service_manager/public/cpp/interface_registry.h" |
| 13 | 13 |
| 14 // This class is intended for web ui pages that use mojo. It is expected that | 14 // This class is intended for web ui pages that use mojo. It is expected that |
| 15 // subclasses will do two things: | 15 // subclasses will do two things: |
| 16 // . In the constructor invoke AddMojoResourcePath() to register the bindings | 16 // . In the constructor invoke AddMojoResourcePath() to register the bindings |
| 17 // files, eg: | 17 // files, eg: |
| 18 // AddMojoResourcePath("chrome/browser/ui/webui/version.mojom", | 18 // AddMojoResourcePath("chrome/browser/ui/webui/version.mojom", |
| 19 // IDR_IOS_VERSION_MOJO_JS); | 19 // IDR_IOS_VERSION_MOJO_JS); |
| 20 // . Override BindUIHandler() to create and bind the implementation of the | 20 // . Override BindUIHandler() to create and bind the implementation of the |
| 21 // bindings. | 21 // bindings. |
| 22 template <typename Interface> | 22 template <typename Interface> |
| 23 class MojoWebUIIOSController : public web::WebUIIOSController, | 23 class MojoWebUIIOSController |
| 24 public shell::InterfaceFactory<Interface> { | 24 : public web::WebUIIOSController, |
| 25 public service_manager::InterfaceFactory<Interface> { |
| 25 public: | 26 public: |
| 26 explicit MojoWebUIIOSController(web::WebUIIOS* web_ui) | 27 explicit MojoWebUIIOSController(web::WebUIIOS* web_ui) |
| 27 : web::WebUIIOSController(web_ui) { | 28 : web::WebUIIOSController(web_ui) { |
| 28 web_ui->GetWebState()->GetMojoInterfaceRegistry()->AddInterface(this); | 29 web_ui->GetWebState()->GetMojoInterfaceRegistry()->AddInterface(this); |
| 29 } | 30 } |
| 30 | 31 |
| 31 protected: | 32 protected: |
| 32 // Invoked to create the specific bindings implementation. | 33 // Invoked to create the specific bindings implementation. |
| 33 virtual void BindUIHandler(mojo::InterfaceRequest<Interface> request) = 0; | 34 virtual void BindUIHandler(mojo::InterfaceRequest<Interface> request) = 0; |
| 34 | 35 |
| 35 private: | 36 private: |
| 36 // shell::InterfaceFactory overrides: | 37 // service_manager::InterfaceFactory overrides: |
| 37 void Create(const shell::Identity& remote_identity, | 38 void Create(const service_manager::Identity& remote_identity, |
| 38 mojo::InterfaceRequest<Interface> request) override { | 39 mojo::InterfaceRequest<Interface> request) override { |
| 39 BindUIHandler(std::move(request)); | 40 BindUIHandler(std::move(request)); |
| 40 } | 41 } |
| 41 | 42 |
| 42 private: | 43 private: |
| 43 DISALLOW_COPY_AND_ASSIGN(MojoWebUIIOSController); | 44 DISALLOW_COPY_AND_ASSIGN(MojoWebUIIOSController); |
| 44 }; | 45 }; |
| 45 | 46 |
| 46 #endif // IOS_CHROME_BROWSER_UI_WEBUI_MOJO_WEB_UI_IOS_CONTROLLER_H_ | 47 #endif // IOS_CHROME_BROWSER_UI_WEBUI_MOJO_WEB_UI_IOS_CONTROLLER_H_ |
| OLD | NEW |