| Index: mojo/examples/embedded_app/embedded_app.cc
|
| diff --git a/mojo/examples/embedded_app/embedded_app.cc b/mojo/examples/embedded_app/embedded_app.cc
|
| index 73f281d609515824f714579fee9641e5396ae4fd..0747cb77f9f65a9855d806b19fe11e2ac4c8a81a 100644
|
| --- a/mojo/examples/embedded_app/embedded_app.cc
|
| +++ b/mojo/examples/embedded_app/embedded_app.cc
|
| @@ -10,10 +10,12 @@
|
| #include "mojo/public/cpp/application/application_connection.h"
|
| #include "mojo/public/cpp/application/application_delegate.h"
|
| #include "mojo/public/cpp/application/application_impl.h"
|
| +#include "mojo/public/cpp/application/interface_factory_with_context.h"
|
| #include "mojo/services/public/cpp/view_manager/node.h"
|
| #include "mojo/services/public/cpp/view_manager/node_observer.h"
|
| #include "mojo/services/public/cpp/view_manager/view.h"
|
| #include "mojo/services/public/cpp/view_manager/view_manager.h"
|
| +#include "mojo/services/public/cpp/view_manager/view_manager_client_factory.h"
|
| #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h"
|
| #include "mojo/services/public/cpp/view_manager/view_observer.h"
|
| #include "mojo/services/public/interfaces/navigation/navigation.mojom.h"
|
| @@ -26,17 +28,37 @@ using mojo::view_manager::NodeObserver;
|
| using mojo::view_manager::View;
|
| using mojo::view_manager::ViewManager;
|
| using mojo::view_manager::ViewManagerDelegate;
|
| +using mojo::view_manager::ViewManagerClientFactory;
|
| using mojo::view_manager::ViewObserver;
|
|
|
| namespace mojo {
|
| namespace examples {
|
| +class EmbeddedApp;
|
| +
|
| +class Navigator : public InterfaceImpl<navigation::Navigator> {
|
| + public:
|
| + explicit Navigator(EmbeddedApp* app) : app_(app) {}
|
| +
|
| + private:
|
| + virtual void Navigate(
|
| + uint32 node_id,
|
| + navigation::NavigationDetailsPtr navigation_details,
|
| + navigation::ResponseDetailsPtr response_details) OVERRIDE;
|
| +
|
| + EmbeddedApp* app_;
|
| + DISALLOW_COPY_AND_ASSIGN(Navigator);
|
| +};
|
|
|
| class EmbeddedApp : public ApplicationDelegate,
|
| public ViewManagerDelegate,
|
| public ViewObserver,
|
| - public NodeObserver {
|
| + public NodeObserver,
|
| + public InterfaceFactoryWithContext<Navigator, EmbeddedApp> {
|
| public:
|
| - EmbeddedApp() : view_manager_(NULL) {
|
| + EmbeddedApp()
|
| + : InterfaceFactoryWithContext(this),
|
| + view_manager_(NULL),
|
| + view_manager_client_factory_(this) {
|
| url::AddStandardScheme("mojo");
|
| }
|
| virtual ~EmbeddedApp() {}
|
| @@ -47,31 +69,6 @@ class EmbeddedApp : public ApplicationDelegate,
|
| }
|
|
|
| private:
|
| - class Navigator : public InterfaceImpl<navigation::Navigator> {
|
| - public:
|
| - Navigator(ApplicationConnection* connection,
|
| - EmbeddedApp* app) : app_(app) {}
|
| - private:
|
| - virtual void Navigate(
|
| - uint32 node_id,
|
| - navigation::NavigationDetailsPtr navigation_details,
|
| - navigation::ResponseDetailsPtr response_details) OVERRIDE {
|
| - GURL url(navigation_details->url.To<std::string>());
|
| - if (!url.is_valid()) {
|
| - LOG(ERROR) << "URL is invalid.";
|
| - return;
|
| - }
|
| - // TODO(aa): Verify new URL is same origin as current origin.
|
| - SkColor color = 0x00;
|
| - if (!base::HexStringToUInt(url.path().substr(1), &color)) {
|
| - LOG(ERROR) << "Invalid URL, path not convertible to integer";
|
| - return;
|
| - }
|
| - app_->SetNodeColor(node_id, color);
|
| - }
|
| - EmbeddedApp* app_;
|
| - DISALLOW_COPY_AND_ASSIGN(Navigator);
|
| - };
|
|
|
| // Overridden from ApplicationDelegate:
|
| virtual void Initialize(ApplicationImpl* app) MOJO_OVERRIDE {
|
| @@ -83,8 +80,8 @@ class EmbeddedApp : public ApplicationDelegate,
|
|
|
| virtual bool ConfigureIncomingConnection(ApplicationConnection* connection)
|
| MOJO_OVERRIDE {
|
| - ViewManager::ConfigureIncomingConnection(connection, this);
|
| - connection->AddService<Navigator>(this);
|
| + connection->AddService(&view_manager_client_factory_);
|
| + connection->AddService(this);
|
| return true;
|
| }
|
|
|
| @@ -147,6 +144,7 @@ class EmbeddedApp : public ApplicationDelegate,
|
| view_manager::ViewManager* view_manager_;
|
| navigation::NavigatorHostPtr navigator_host_;
|
| std::map<Node*, View*> views_to_reap_;
|
| + ViewManagerClientFactory view_manager_client_factory_;
|
|
|
| typedef std::map<view_manager::Id, Node*> RootMap;
|
| RootMap roots_;
|
| @@ -158,6 +156,23 @@ class EmbeddedApp : public ApplicationDelegate,
|
| DISALLOW_COPY_AND_ASSIGN(EmbeddedApp);
|
| };
|
|
|
| +void Navigator::Navigate(uint32 node_id,
|
| + navigation::NavigationDetailsPtr navigation_details,
|
| + navigation::ResponseDetailsPtr response_details) {
|
| + GURL url(navigation_details->url.To<std::string>());
|
| + if (!url.is_valid()) {
|
| + LOG(ERROR) << "URL is invalid.";
|
| + return;
|
| + }
|
| + // TODO(aa): Verify new URL is same origin as current origin.
|
| + SkColor color = 0x00;
|
| + if (!base::HexStringToUInt(url.path().substr(1), &color)) {
|
| + LOG(ERROR) << "Invalid URL, path not convertible to integer";
|
| + return;
|
| + }
|
| + app_->SetNodeColor(node_id, color);
|
| +}
|
| +
|
| } // namespace examples
|
|
|
| // static
|
|
|