Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Side by Side Diff: mojo/shell/dynamic_service_loader.cc

Issue 265793015: Mojo: Replace RemotePtr with InterfacePtr and InterfaceImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "mojo/shell/dynamic_service_loader.h" 5 #include "mojo/shell/dynamic_service_loader.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "mojo/shell/context.h" 9 #include "mojo/shell/context.h"
10 #include "mojo/shell/keep_alive.h" 10 #include "mojo/shell/keep_alive.h"
(...skipping 16 matching lines...) Expand all
27 return std::string(); 27 return std::string();
28 #endif 28 #endif
29 } 29 }
30 30
31 } // namespace 31 } // namespace
32 32
33 class DynamicServiceLoader::LoadContext : public mojo::shell::Loader::Delegate { 33 class DynamicServiceLoader::LoadContext : public mojo::shell::Loader::Delegate {
34 public: 34 public:
35 LoadContext(DynamicServiceLoader* loader, 35 LoadContext(DynamicServiceLoader* loader,
36 const GURL& url, 36 const GURL& url,
37 ScopedShellHandle service_handle, 37 ScopedMessagePipeHandle service_handle,
38 scoped_ptr<DynamicServiceRunner> runner) 38 scoped_ptr<DynamicServiceRunner> runner)
39 : loader_(loader), 39 : loader_(loader),
40 url_(url), 40 url_(url),
41 service_handle_(service_handle.Pass()), 41 service_handle_(service_handle.Pass()),
42 runner_(runner.Pass()), 42 runner_(runner.Pass()),
43 keep_alive_(loader->context_) { 43 keep_alive_(loader->context_) {
44 GURL url_to_load; 44 GURL url_to_load;
45 45
46 if (url.SchemeIs("mojo")) { 46 if (url.SchemeIs("mojo")) {
47 std::string origin = 47 std::string origin =
(...skipping 24 matching lines...) Expand all
72 runner_->Start( 72 runner_->Start(
73 app_path, 73 app_path,
74 service_handle_.Pass(), 74 service_handle_.Pass(),
75 base::Bind(&DynamicServiceLoader::AppCompleted, 75 base::Bind(&DynamicServiceLoader::AppCompleted,
76 base::Unretained(loader_), url_)); 76 base::Unretained(loader_), url_));
77 } 77 }
78 78
79 DynamicServiceLoader* const loader_; 79 DynamicServiceLoader* const loader_;
80 const GURL url_; 80 const GURL url_;
81 scoped_ptr<mojo::shell::Loader::Job> request_; 81 scoped_ptr<mojo::shell::Loader::Job> request_;
82 ScopedShellHandle service_handle_; 82 ScopedMessagePipeHandle service_handle_;
83 scoped_ptr<DynamicServiceRunner> runner_; 83 scoped_ptr<DynamicServiceRunner> runner_;
84 KeepAlive keep_alive_; 84 KeepAlive keep_alive_;
85 85
86 DISALLOW_COPY_AND_ASSIGN(LoadContext); 86 DISALLOW_COPY_AND_ASSIGN(LoadContext);
87 }; 87 };
88 88
89 DynamicServiceLoader::DynamicServiceLoader( 89 DynamicServiceLoader::DynamicServiceLoader(
90 Context* context, 90 Context* context,
91 scoped_ptr<DynamicServiceRunnerFactory> runner_factory) 91 scoped_ptr<DynamicServiceRunnerFactory> runner_factory)
92 : context_(context), 92 : context_(context),
93 runner_factory_(runner_factory.Pass()) { 93 runner_factory_(runner_factory.Pass()) {
94 } 94 }
95 95
96 DynamicServiceLoader::~DynamicServiceLoader() { 96 DynamicServiceLoader::~DynamicServiceLoader() {
97 DCHECK(url_to_load_context_.empty()); 97 DCHECK(url_to_load_context_.empty());
98 } 98 }
99 99
100 void DynamicServiceLoader::LoadService(ServiceManager* manager, 100 void DynamicServiceLoader::LoadService(ServiceManager* manager,
101 const GURL& url, 101 const GURL& url,
102 ScopedShellHandle service_handle) { 102 ScopedMessagePipeHandle service_handle) {
103 DCHECK(url_to_load_context_.find(url) == url_to_load_context_.end()); 103 DCHECK(url_to_load_context_.find(url) == url_to_load_context_.end());
104 url_to_load_context_[url] = new LoadContext( 104 url_to_load_context_[url] = new LoadContext(
105 this, url, service_handle.Pass(), runner_factory_->Create(context_)); 105 this, url, service_handle.Pass(), runner_factory_->Create(context_));
106 } 106 }
107 107
108 void DynamicServiceLoader::OnServiceError(ServiceManager* manager, 108 void DynamicServiceLoader::OnServiceError(ServiceManager* manager,
109 const GURL& url) { 109 const GURL& url) {
110 } 110 }
111 111
112 void DynamicServiceLoader::AppCompleted(const GURL& url) { 112 void DynamicServiceLoader::AppCompleted(const GURL& url) {
113 DCHECK(context_->task_runners()->ui_runner()->BelongsToCurrentThread()); 113 DCHECK(context_->task_runners()->ui_runner()->BelongsToCurrentThread());
114 DVLOG(2) << "App completed (url: " << url << ")"; 114 DVLOG(2) << "App completed (url: " << url << ")";
115 115
116 LoadContextMap::iterator it = url_to_load_context_.find(url); 116 LoadContextMap::iterator it = url_to_load_context_.find(url);
117 DCHECK(it != url_to_load_context_.end()) << url; 117 DCHECK(it != url_to_load_context_.end()) << url;
118 118
119 LoadContext* doomed = it->second; 119 LoadContext* doomed = it->second;
120 url_to_load_context_.erase(it); 120 url_to_load_context_.erase(it);
121 121
122 delete doomed; 122 delete doomed;
123 } 123 }
124 124
125 } // namespace shell 125 } // namespace shell
126 } // namespace mojo 126 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698