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

Side by Side Diff: chrome/browser/extensions/extension_message_service.cc

Issue 7492051: Revert 94332 - Removal of Profile from content part 2. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 5 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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome/browser/extensions/extension_message_service.h" 5 #include "chrome/browser/extensions/extension_message_service.h"
6 6
7 #include "base/atomic_sequence_num.h" 7 #include "base/atomic_sequence_num.h"
8 #include "base/json/json_writer.h" 8 #include "base/json/json_writer.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 } 136 }
137 137
138 void ExtensionMessageService::OpenChannelToExtension( 138 void ExtensionMessageService::OpenChannelToExtension(
139 int source_process_id, int source_routing_id, int receiver_port_id, 139 int source_process_id, int source_routing_id, int receiver_port_id,
140 const std::string& source_extension_id, 140 const std::string& source_extension_id,
141 const std::string& target_extension_id, 141 const std::string& target_extension_id,
142 const std::string& channel_name) { 142 const std::string& channel_name) {
143 RenderProcessHost* source = RenderProcessHost::FromID(source_process_id); 143 RenderProcessHost* source = RenderProcessHost::FromID(source_process_id);
144 if (!source) 144 if (!source)
145 return; 145 return;
146 Profile* profile = Profile::FromBrowserContext(source->browser_context());
147 146
148 // Note: we use the source's profile here. If the source is an incognito 147 // Note: we use the source's profile here. If the source is an incognito
149 // process, we will use the incognito EPM to find the right extension process, 148 // process, we will use the incognito EPM to find the right extension process,
150 // which depends on whether the extension uses spanning or split mode. 149 // which depends on whether the extension uses spanning or split mode.
151 MessagePort receiver( 150 MessagePort receiver(
152 profile->GetExtensionProcessManager()->GetExtensionProcess( 151 source->profile()->GetExtensionProcessManager()->GetExtensionProcess(
153 target_extension_id), 152 target_extension_id),
154 MSG_ROUTING_CONTROL); 153 MSG_ROUTING_CONTROL);
155 TabContents* source_contents = tab_util::GetTabContentsByID( 154 TabContents* source_contents = tab_util::GetTabContentsByID(
156 source_process_id, source_routing_id); 155 source_process_id, source_routing_id);
157 156
158 // Include info about the opener's tab (if it was a tab). 157 // Include info about the opener's tab (if it was a tab).
159 std::string tab_json = "null"; 158 std::string tab_json = "null";
160 if (source_contents) { 159 if (source_contents) {
161 scoped_ptr<DictionaryValue> tab_value( 160 scoped_ptr<DictionaryValue> tab_value(
162 ExtensionTabUtil::CreateTabValue(source_contents)); 161 ExtensionTabUtil::CreateTabValue(source_contents));
163 base::JSONWriter::Write(tab_value.get(), false, &tab_json); 162 base::JSONWriter::Write(tab_value.get(), false, &tab_json);
164 } 163 }
165 164
166 OpenChannelImpl(source, tab_json, receiver, receiver_port_id, 165 OpenChannelImpl(source, tab_json, receiver, receiver_port_id,
167 source_extension_id, target_extension_id, channel_name); 166 source_extension_id, target_extension_id, channel_name);
168 } 167 }
169 168
170 void ExtensionMessageService::OpenChannelToTab( 169 void ExtensionMessageService::OpenChannelToTab(
171 int source_process_id, int source_routing_id, int receiver_port_id, 170 int source_process_id, int source_routing_id, int receiver_port_id,
172 int tab_id, const std::string& extension_id, 171 int tab_id, const std::string& extension_id,
173 const std::string& channel_name) { 172 const std::string& channel_name) {
174 RenderProcessHost* source = RenderProcessHost::FromID(source_process_id); 173 RenderProcessHost* source = RenderProcessHost::FromID(source_process_id);
175 if (!source) 174 if (!source)
176 return; 175 return;
177 Profile* profile = Profile::FromBrowserContext(source->browser_context());
178 176
179 TabContentsWrapper* contents = NULL; 177 TabContentsWrapper* contents = NULL;
180 MessagePort receiver; 178 MessagePort receiver;
181 if (ExtensionTabUtil::GetTabById(tab_id, profile, true, 179 if (ExtensionTabUtil::GetTabById(tab_id, source->profile(), true,
182 NULL, NULL, &contents, NULL)) { 180 NULL, NULL, &contents, NULL)) {
183 receiver.sender = contents->render_view_host(); 181 receiver.sender = contents->render_view_host();
184 receiver.routing_id = contents->render_view_host()->routing_id(); 182 receiver.routing_id = contents->render_view_host()->routing_id();
185 } 183 }
186 184
187 if (contents && contents->controller().needs_reload()) { 185 if (contents && contents->controller().needs_reload()) {
188 // The tab isn't loaded yet. Don't attempt to connect. Treat this as a 186 // The tab isn't loaded yet. Don't attempt to connect. Treat this as a
189 // disconnect. 187 // disconnect.
190 DispatchOnDisconnect(MessagePort(source, MSG_ROUTING_CONTROL), 188 DispatchOnDisconnect(MessagePort(source, MSG_ROUTING_CONTROL),
191 GET_OPPOSITE_PORT_ID(receiver_port_id), true); 189 GET_OPPOSITE_PORT_ID(receiver_port_id), true);
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 356
359 if (current->second->opener.sender == sender) { 357 if (current->second->opener.sender == sender) {
360 CloseChannelImpl(current, GET_CHANNEL_OPENER_ID(current->first), 358 CloseChannelImpl(current, GET_CHANNEL_OPENER_ID(current->first),
361 notify_other_port); 359 notify_other_port);
362 } else if (current->second->receiver.sender == sender) { 360 } else if (current->second->receiver.sender == sender) {
363 CloseChannelImpl(current, GET_CHANNEL_RECEIVERS_ID(current->first), 361 CloseChannelImpl(current, GET_CHANNEL_RECEIVERS_ID(current->first),
364 notify_other_port); 362 notify_other_port);
365 } 363 }
366 } 364 }
367 } 365 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_message_handler.cc ('k') | chrome/browser/extensions/extension_process_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698