| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/macros.h" | 8 #include "base/macros.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| 11 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" |
| 12 #include "components/html_viewer/html_document.h" | 12 #include "components/html_viewer/html_document.h" |
| 13 #include "components/html_viewer/setup.h" | 13 #include "components/html_viewer/setup.h" |
| 14 #include "mojo/application/public/cpp/application_connection.h" | 14 #include "mojo/application/public/cpp/application_connection.h" |
| 15 #include "mojo/application/public/cpp/application_delegate.h" | 15 #include "mojo/application/public/cpp/application_delegate.h" |
| 16 #include "mojo/application/public/cpp/application_impl.h" | 16 #include "mojo/application/public/cpp/application_impl.h" |
| 17 #include "mojo/application/public/cpp/application_runner.h" | 17 #include "mojo/application/public/cpp/application_runner.h" |
| 18 #include "mojo/application/public/cpp/connect.h" | 18 #include "mojo/application/public/cpp/connect.h" |
| 19 #include "mojo/application/public/cpp/interface_factory_impl.h" | 19 #include "mojo/application/public/cpp/interface_factory_impl.h" |
| 20 #include "mojo/application/public/interfaces/content_handler.mojom.h" | 20 #include "mojo/application/public/interfaces/content_handler.mojom.h" |
| 21 #include "mojo/common/common_type_converters.h" | 21 #include "mojo/common/common_type_converters.h" |
| 22 #include "mojo/services/network/public/interfaces/network_service.mojom.h" | 22 #include "mojo/services/network/public/interfaces/network_service.mojom.h" |
| 23 #include "mojo/services/network/public/interfaces/url_loader_factory.mojom.h" |
| 23 #include "third_party/WebKit/public/web/WebKit.h" | 24 #include "third_party/WebKit/public/web/WebKit.h" |
| 24 #include "third_party/mojo/src/mojo/public/c/system/main.h" | 25 #include "third_party/mojo/src/mojo/public/c/system/main.h" |
| 25 #include "third_party/mojo/src/mojo/public/cpp/bindings/strong_binding.h" | 26 #include "third_party/mojo/src/mojo/public/cpp/bindings/strong_binding.h" |
| 26 | 27 |
| 27 using mojo::ApplicationConnection; | 28 using mojo::ApplicationConnection; |
| 28 using mojo::Array; | 29 using mojo::Array; |
| 29 using mojo::BindToRequest; | 30 using mojo::BindToRequest; |
| 30 using mojo::ContentHandler; | 31 using mojo::ContentHandler; |
| 31 using mojo::InterfaceRequest; | 32 using mojo::InterfaceRequest; |
| 32 using mojo::ServiceProvider; | 33 using mojo::ServiceProvider; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 52 setup_(setup) { | 53 setup_(setup) { |
| 53 } | 54 } |
| 54 | 55 |
| 55 ~HTMLViewerApplication() override { | 56 ~HTMLViewerApplication() override { |
| 56 } | 57 } |
| 57 | 58 |
| 58 void Initialize(ShellPtr shell, const String& url) override { | 59 void Initialize(ShellPtr shell, const String& url) override { |
| 59 shell_ = shell.Pass(); | 60 shell_ = shell.Pass(); |
| 60 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 61 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
| 61 request->url = mojo::String::From("mojo:network_service"); | 62 request->url = mojo::String::From("mojo:network_service"); |
| 62 setup_->app()->ConnectToService(request.Pass(), &network_service_); | 63 mojo::ApplicationConnection* connection = |
| 64 setup_->app()->ConnectToApplication(request.Pass()); |
| 65 connection->ConnectToService(&network_service_); |
| 66 connection->ConnectToService(&url_loader_factory_); |
| 63 } | 67 } |
| 64 | 68 |
| 65 void AcceptConnection(const String& requestor_url, | 69 void AcceptConnection(const String& requestor_url, |
| 66 InterfaceRequest<ServiceProvider> services, | 70 InterfaceRequest<ServiceProvider> services, |
| 67 ServiceProviderPtr exposed_services, | 71 ServiceProviderPtr exposed_services, |
| 68 const String& url) override { | 72 const String& url) override { |
| 69 if (initial_response_) { | 73 if (initial_response_) { |
| 70 OnResponseReceived(URLLoaderPtr(), services.Pass(), | 74 OnResponseReceived(URLLoaderPtr(), services.Pass(), |
| 71 initial_response_.Pass()); | 75 initial_response_.Pass()); |
| 72 } else { | 76 } else { |
| 73 URLLoaderPtr loader; | 77 URLLoaderPtr loader; |
| 74 network_service_->CreateURLLoader(GetProxy(&loader)); | 78 url_loader_factory_->CreateURLLoader(GetProxy(&loader)); |
| 75 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 79 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
| 76 request->url = url_; | 80 request->url = url_; |
| 77 request->auto_follow_redirects = true; | 81 request->auto_follow_redirects = true; |
| 78 | 82 |
| 79 // |loader| will be pass to the OnResponseReceived method through a | 83 // |loader| will be pass to the OnResponseReceived method through a |
| 80 // callback. Because order of evaluation is undefined, a reference to the | 84 // callback. Because order of evaluation is undefined, a reference to the |
| 81 // raw pointer is needed. | 85 // raw pointer is needed. |
| 82 mojo::URLLoader* raw_loader = loader.get(); | 86 mojo::URLLoader* raw_loader = loader.get(); |
| 83 raw_loader->Start( | 87 raw_loader->Start( |
| 84 request.Pass(), | 88 request.Pass(), |
| (...skipping 15 matching lines...) Expand all Loading... |
| 100 // HTMLDocument is destroyed when the hosting view is destroyed. | 104 // HTMLDocument is destroyed when the hosting view is destroyed. |
| 101 // TODO(sky): when headless, this leaks. | 105 // TODO(sky): when headless, this leaks. |
| 102 new HTMLDocument(services.Pass(), response.Pass(), shell_.Pass(), setup_); | 106 new HTMLDocument(services.Pass(), response.Pass(), shell_.Pass(), setup_); |
| 103 } | 107 } |
| 104 | 108 |
| 105 scoped_ptr<mojo::AppRefCount> app_refcount_; | 109 scoped_ptr<mojo::AppRefCount> app_refcount_; |
| 106 String url_; | 110 String url_; |
| 107 mojo::StrongBinding<mojo::Application> binding_; | 111 mojo::StrongBinding<mojo::Application> binding_; |
| 108 ShellPtr shell_; | 112 ShellPtr shell_; |
| 109 mojo::NetworkServicePtr network_service_; | 113 mojo::NetworkServicePtr network_service_; |
| 114 mojo::URLLoaderFactoryPtr url_loader_factory_; |
| 110 URLResponsePtr initial_response_; | 115 URLResponsePtr initial_response_; |
| 111 Setup* setup_; | 116 Setup* setup_; |
| 112 | 117 |
| 113 DISALLOW_COPY_AND_ASSIGN(HTMLViewerApplication); | 118 DISALLOW_COPY_AND_ASSIGN(HTMLViewerApplication); |
| 114 }; | 119 }; |
| 115 | 120 |
| 116 class ContentHandlerImpl : public mojo::ContentHandler { | 121 class ContentHandlerImpl : public mojo::ContentHandler { |
| 117 public: | 122 public: |
| 118 ContentHandlerImpl(Setup* setup, | 123 ContentHandlerImpl(Setup* setup, |
| 119 mojo::InterfaceRequest<ContentHandler> request) | 124 mojo::InterfaceRequest<ContentHandler> request) |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 | 174 |
| 170 DISALLOW_COPY_AND_ASSIGN(HTMLViewer); | 175 DISALLOW_COPY_AND_ASSIGN(HTMLViewer); |
| 171 }; | 176 }; |
| 172 | 177 |
| 173 } // namespace html_viewer | 178 } // namespace html_viewer |
| 174 | 179 |
| 175 MojoResult MojoMain(MojoHandle shell_handle) { | 180 MojoResult MojoMain(MojoHandle shell_handle) { |
| 176 mojo::ApplicationRunner runner(new html_viewer::HTMLViewer); | 181 mojo::ApplicationRunner runner(new html_viewer::HTMLViewer); |
| 177 return runner.Run(shell_handle); | 182 return runner.Run(shell_handle); |
| 178 } | 183 } |
| OLD | NEW |