Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / mojo / examples / browser / browser.cc
index bd85494..05666a3 100644 (file)
@@ -5,11 +5,14 @@
 #include "base/basictypes.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
+#include "mojo/application/application_runner_chromium.h"
 #include "mojo/common/common_type_converters.h"
 #include "mojo/examples/window_manager/window_manager.mojom.h"
+#include "mojo/public/c/system/main.h"
 #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/connect.h"
 #include "mojo/services/public/cpp/geometry/geometry_type_converters.h"
 #include "mojo/services/public/cpp/view_manager/view.h"
 #include "mojo/services/public/cpp/view_manager/view_manager.h"
@@ -153,7 +156,6 @@ class Browser : public ApplicationDelegate,
  public:
   Browser()
       : view_manager_(NULL),
-        view_manager_client_factory_(this),
         root_(NULL),
         widget_(NULL) {}
 
@@ -165,14 +167,15 @@ class Browser : public ApplicationDelegate,
  private:
   // Overridden from ApplicationDelegate:
   virtual void Initialize(ApplicationImpl* app) MOJO_OVERRIDE {
+    view_manager_client_factory_.reset(
+        new ViewManagerClientFactory(app->shell(), this));
     views_init_.reset(new ViewsInit);
-    app->ConnectToService("mojo:mojo_window_manager", &navigator_host_);
     app->ConnectToService("mojo:mojo_window_manager", &window_manager_);
  }
 
   virtual bool ConfigureIncomingConnection(ApplicationConnection* connection)
       MOJO_OVERRIDE {
-    connection->AddService(&view_manager_client_factory_);
+    connection->AddService(view_manager_client_factory_.get());
     return true;
   }
 
@@ -206,6 +209,7 @@ class Browser : public ApplicationDelegate,
                        ServiceProviderImpl* exported_services,
                        scoped_ptr<ServiceProvider> imported_services) OVERRIDE {
     // TODO: deal with OnEmbed() being invoked multiple times.
+    ConnectToService(imported_services.get(), &navigator_host_);
     view_manager_ = view_manager;
     root_ = root;
     root_->AddObserver(this);
@@ -225,11 +229,9 @@ class Browser : public ApplicationDelegate,
     if (key_event.key_code() == ui::VKEY_RETURN) {
       GURL url(sender->text());
       printf("User entered this URL: %s\n", url.spec().c_str());
-      NavigationDetailsPtr nav_details(NavigationDetails::New());
-      nav_details->request->url = String::From(url);
-      navigator_host_->RequestNavigate(view_manager_->GetRoots().front()->id(),
-                                       TARGET_NEW_NODE,
-                                       nav_details.Pass());
+      URLRequestPtr request(URLRequest::New());
+      request->url = String::From(url);
+      navigator_host_->RequestNavigate(TARGET_NEW_NODE, request.Pass());
     }
     return false;
   }
@@ -253,7 +255,7 @@ class Browser : public ApplicationDelegate,
   scoped_ptr<ViewsInit> views_init_;
 
   ViewManager* view_manager_;
-  ViewManagerClientFactory view_manager_client_factory_;
+  scoped_ptr<ViewManagerClientFactory> view_manager_client_factory_;
   View* root_;
   views::Widget* widget_;
   NavigatorHostPtr navigator_host_;
@@ -263,10 +265,9 @@ class Browser : public ApplicationDelegate,
 };
 
 }  // namespace examples
+}  // namespace mojo
 
-// static
-ApplicationDelegate* ApplicationDelegate::Create() {
-  return new examples::Browser;
+MojoResult MojoMain(MojoHandle shell_handle) {
+  mojo::ApplicationRunnerChromium runner(new mojo::examples::Browser);
+  return runner.Run(shell_handle);
 }
-
-}  // namespace mojo