| 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/compiler_specific.h" | 6 #include "base/compiler_specific.h" |
| 7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
| 8 #include "base/strings/string_tokenizer.h" | 8 #include "base/strings/string_tokenizer.h" |
| 9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
| 10 #include "mojo/public/cpp/application/application_connection.h" | 10 #include "mojo/public/cpp/application/application_connection.h" |
| 11 #include "mojo/public/cpp/application/application_delegate.h" | 11 #include "mojo/public/cpp/application/application_delegate.h" |
| 12 #include "mojo/public/cpp/application/application_impl.h" | 12 #include "mojo/public/cpp/application/application_impl.h" |
| 13 #include "mojo/public/cpp/application/context_interface_provider.h" |
| 13 #include "mojo/services/public/cpp/view_manager/types.h" | 14 #include "mojo/services/public/cpp/view_manager/types.h" |
| 14 #include "mojo/services/public/interfaces/launcher/launcher.mojom.h" | 15 #include "mojo/services/public/interfaces/launcher/launcher.mojom.h" |
| 15 #include "mojo/services/public/interfaces/network/network_service.mojom.h" | 16 #include "mojo/services/public/interfaces/network/network_service.mojom.h" |
| 16 #include "mojo/services/public/interfaces/network/url_loader.mojom.h" | 17 #include "mojo/services/public/interfaces/network/url_loader.mojom.h" |
| 17 #include "url/gurl.h" | 18 #include "url/gurl.h" |
| 18 | 19 |
| 19 namespace mojo { | 20 namespace mojo { |
| 20 namespace launcher { | 21 namespace launcher { |
| 21 | 22 |
| 22 namespace { | 23 namespace { |
| 23 | 24 |
| 24 typedef mojo::Callback<void(String handler_url, String view_url, | 25 typedef mojo::Callback<void(String handler_url, String view_url, |
| 25 navigation::ResponseDetailsPtr response)> LaunchCallback; | 26 navigation::ResponseDetailsPtr response)> LaunchCallback; |
| 26 | 27 |
| 27 } | 28 } |
| 28 | 29 |
| 29 class LauncherApp; | 30 class LauncherApp; |
| 30 | 31 |
| 31 class LauncherConnection : public InterfaceImpl<Launcher> { | 32 class LauncherConnection : public InterfaceImpl<Launcher> { |
| 32 public: | 33 public: |
| 33 LauncherConnection(ApplicationConnection* connection, LauncherApp* app) | 34 explicit LauncherConnection(LauncherApp* app) : app_(app) {} |
| 34 : app_(app) {} | |
| 35 virtual ~LauncherConnection() {} | 35 virtual ~LauncherConnection() {} |
| 36 | 36 |
| 37 private: | 37 private: |
| 38 // Overridden from Launcher: | 38 // Overridden from Launcher: |
| 39 virtual void Launch(const String& url, | 39 virtual void Launch(const String& url, |
| 40 const LaunchCallback& callback) OVERRIDE; | 40 const LaunchCallback& callback) OVERRIDE; |
| 41 | 41 |
| 42 LauncherApp* app_; | 42 LauncherApp* app_; |
| 43 | 43 |
| 44 DISALLOW_COPY_AND_ASSIGN(LauncherConnection); | 44 DISALLOW_COPY_AND_ASSIGN(LauncherConnection); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 | 79 |
| 80 LauncherApp* app_; | 80 LauncherApp* app_; |
| 81 bool destroy_scheduled_; | 81 bool destroy_scheduled_; |
| 82 const LaunchCallback callback_; | 82 const LaunchCallback callback_; |
| 83 URLLoaderPtr url_loader_; | 83 URLLoaderPtr url_loader_; |
| 84 ScopedDataPipeConsumerHandle response_body_stream_; | 84 ScopedDataPipeConsumerHandle response_body_stream_; |
| 85 | 85 |
| 86 DISALLOW_COPY_AND_ASSIGN(LaunchInstance); | 86 DISALLOW_COPY_AND_ASSIGN(LaunchInstance); |
| 87 }; | 87 }; |
| 88 | 88 |
| 89 class LauncherApp : public ApplicationDelegate { | 89 class LauncherApp |
| 90 : public ApplicationDelegate, |
| 91 public ContextInterfaceProvider<LauncherConnection, LauncherApp> { |
| 90 public: | 92 public: |
| 91 LauncherApp() { | 93 LauncherApp() : ContextInterfaceProvider(this) { |
| 92 handler_map_["text/html"] = "mojo:mojo_html_viewer"; | 94 handler_map_["text/html"] = "mojo:mojo_html_viewer"; |
| 93 handler_map_["image/png"] = "mojo:mojo_media_viewer"; | 95 handler_map_["image/png"] = "mojo:mojo_media_viewer"; |
| 94 } | 96 } |
| 95 virtual ~LauncherApp() {} | 97 virtual ~LauncherApp() {} |
| 96 | 98 |
| 97 URLLoaderPtr CreateURLLoader() { | 99 URLLoaderPtr CreateURLLoader() { |
| 98 URLLoaderPtr loader; | 100 URLLoaderPtr loader; |
| 99 network_service_->CreateURLLoader(Get(&loader)); | 101 network_service_->CreateURLLoader(Get(&loader)); |
| 100 return loader.Pass(); | 102 return loader.Pass(); |
| 101 } | 103 } |
| 102 | 104 |
| 103 std::string GetHandlerForContentType(const std::string& content_type) { | 105 std::string GetHandlerForContentType(const std::string& content_type) { |
| 104 HandlerMap::const_iterator it = handler_map_.find(content_type); | 106 HandlerMap::const_iterator it = handler_map_.find(content_type); |
| 105 return it != handler_map_.end() ? it->second : ""; | 107 return it != handler_map_.end() ? it->second : ""; |
| 106 } | 108 } |
| 107 | 109 |
| 108 private: | 110 private: |
| 109 typedef std::map<std::string, std::string> HandlerMap; | 111 typedef std::map<std::string, std::string> HandlerMap; |
| 110 | 112 |
| 111 // Overridden from ApplicationDelegate: | 113 // Overridden from ApplicationDelegate: |
| 112 virtual void Initialize(ApplicationImpl* app) MOJO_OVERRIDE { | 114 virtual void Initialize(ApplicationImpl* app) MOJO_OVERRIDE { |
| 113 app->ConnectToService("mojo:mojo_network_service", &network_service_); | 115 app->ConnectToService("mojo:mojo_network_service", &network_service_); |
| 114 } | 116 } |
| 115 | 117 |
| 116 virtual bool ConfigureIncomingConnection(ApplicationConnection* connection) | 118 virtual bool ConfigureIncomingConnection(ApplicationConnection* connection) |
| 117 MOJO_OVERRIDE { | 119 MOJO_OVERRIDE { |
| 118 connection->AddService<LauncherConnection>(this); | 120 connection->AddServiceProvider(this); |
| 119 return true; | 121 return true; |
| 120 } | 122 } |
| 121 | 123 |
| 122 HandlerMap handler_map_; | 124 HandlerMap handler_map_; |
| 123 | 125 |
| 124 NetworkServicePtr network_service_; | 126 NetworkServicePtr network_service_; |
| 125 | 127 |
| 126 DISALLOW_COPY_AND_ASSIGN(LauncherApp); | 128 DISALLOW_COPY_AND_ASSIGN(LauncherApp); |
| 127 }; | 129 }; |
| 128 | 130 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 } | 178 } |
| 177 | 179 |
| 178 } // namespace launcher | 180 } // namespace launcher |
| 179 | 181 |
| 180 // static | 182 // static |
| 181 ApplicationDelegate* ApplicationDelegate::Create() { | 183 ApplicationDelegate* ApplicationDelegate::Create() { |
| 182 return new launcher::LauncherApp; | 184 return new launcher::LauncherApp; |
| 183 } | 185 } |
| 184 | 186 |
| 185 } // namespace mojo | 187 } // namespace mojo |
| OLD | NEW |