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

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

Issue 2821011: Removes phantom tabs. (Closed)
Patch Set: Created 10 years, 6 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
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/json/json_writer.h" 7 #include "base/json/json_writer.h"
8 #include "base/singleton.h" 8 #include "base/singleton.h"
9 #include "base/stl_util-inl.h" 9 #include "base/stl_util-inl.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 MessagePort receiver; 296 MessagePort receiver;
297 receiver.debug_info = 2; 297 receiver.debug_info = 2;
298 if (ExtensionTabUtil::GetTabById(tab_id, source->profile(), true, 298 if (ExtensionTabUtil::GetTabById(tab_id, source->profile(), true,
299 NULL, NULL, &contents, NULL)) { 299 NULL, NULL, &contents, NULL)) {
300 receiver.sender = contents->render_view_host(); 300 receiver.sender = contents->render_view_host();
301 receiver.routing_id = contents->render_view_host()->routing_id(); 301 receiver.routing_id = contents->render_view_host()->routing_id();
302 receiver.debug_info = 3; 302 receiver.debug_info = 3;
303 } 303 }
304 304
305 if (contents && contents->controller().needs_reload()) { 305 if (contents && contents->controller().needs_reload()) {
306 // The tab isn't loaded yet (it may be phantom). Don't attempt to connect. 306 // The tab isn't loaded yet (it needs to be restored). Don't attempt to
307 // Treat this as a disconnect. 307 // connect. Treat this as a disconnect.
308 DispatchOnDisconnect(MessagePort(source, MSG_ROUTING_CONTROL), 308 DispatchOnDisconnect(MessagePort(source, MSG_ROUTING_CONTROL),
309 GET_OPPOSITE_PORT_ID(receiver_port_id)); 309 GET_OPPOSITE_PORT_ID(receiver_port_id));
310 return; 310 return;
311 } 311 }
312 312
313 TabContents* source_contents = tab_util::GetTabContentsByID( 313 TabContents* source_contents = tab_util::GetTabContentsByID(
314 source_process_id, source_routing_id); 314 source_process_id, source_routing_id);
315 315
316 // Include info about the opener's tab (if it was a tab). 316 // Include info about the opener's tab (if it was a tab).
317 std::string tab_json = "null"; 317 std::string tab_json = "null";
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 return port1_id; 393 return port1_id;
394 } 394 }
395 395
396 int ExtensionMessageService::OpenSpecialChannelToTab( 396 int ExtensionMessageService::OpenSpecialChannelToTab(
397 const std::string& extension_id, const std::string& channel_name, 397 const std::string& extension_id, const std::string& channel_name,
398 TabContents* target_tab_contents, IPC::Message::Sender* source) { 398 TabContents* target_tab_contents, IPC::Message::Sender* source) {
399 DCHECK_EQ(MessageLoop::current()->type(), MessageLoop::TYPE_UI); 399 DCHECK_EQ(MessageLoop::current()->type(), MessageLoop::TYPE_UI);
400 DCHECK(target_tab_contents); 400 DCHECK(target_tab_contents);
401 401
402 if (target_tab_contents->controller().needs_reload()) { 402 if (target_tab_contents->controller().needs_reload()) {
403 // The tab isn't loaded yet (it may be phantom). Don't attempt to connect. 403 // The tab isn't loaded yet (it needs to be reloaded). Don't attempt to
404 // connect.
404 return -1; 405 return -1;
405 } 406 }
406 407
407 int port1_id = -1; 408 int port1_id = -1;
408 int port2_id = -1; 409 int port2_id = -1;
409 // Create a channel ID for both sides of the channel. 410 // Create a channel ID for both sides of the channel.
410 AllocatePortIdPair(&port1_id, &port2_id); 411 AllocatePortIdPair(&port1_id, &port2_id);
411 412
412 MessagePort receiver( 413 MessagePort receiver(
413 target_tab_contents->render_view_host(), 414 target_tab_contents->render_view_host(),
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 551
551 if (current->second->opener.sender == sender) { 552 if (current->second->opener.sender == sender) {
552 CloseChannelImpl(current, GET_CHANNEL_OPENER_ID(current->first), 553 CloseChannelImpl(current, GET_CHANNEL_OPENER_ID(current->first),
553 notify_other_port); 554 notify_other_port);
554 } else if (current->second->receiver.sender == sender) { 555 } else if (current->second->receiver.sender == sender) {
555 CloseChannelImpl(current, GET_CHANNEL_RECEIVERS_ID(current->first), 556 CloseChannelImpl(current, GET_CHANNEL_RECEIVERS_ID(current->first),
556 notify_other_port); 557 notify_other_port);
557 } 558 }
558 } 559 }
559 } 560 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_browser_event_router.cc ('k') | chrome/browser/extensions/extension_tabs_module.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698