| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/api/messaging/extension_message_port.h" | 5 #include "chrome/browser/extensions/api/messaging/extension_message_port.h" |
| 6 | 6 |
| 7 #include "base/memory/ptr_util.h" | 7 #include "base/memory/ptr_util.h" |
| 8 #include "base/scoped_observer.h" | 8 #include "base/scoped_observer.h" |
| 9 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
| 10 #include "content/public/browser/interstitial_page.h" | 10 #include "content/public/browser/interstitial_page.h" |
| 11 #include "content/public/browser/navigation_details.h" | 11 #include "content/public/browser/navigation_handle.h" |
| 12 #include "content/public/browser/render_frame_host.h" | 12 #include "content/public/browser/render_frame_host.h" |
| 13 #include "content/public/browser/render_process_host.h" | 13 #include "content/public/browser/render_process_host.h" |
| 14 #include "content/public/browser/web_contents.h" | 14 #include "content/public/browser/web_contents.h" |
| 15 #include "content/public/browser/web_contents_observer.h" | 15 #include "content/public/browser/web_contents_observer.h" |
| 16 #include "extensions/browser/extension_host.h" | 16 #include "extensions/browser/extension_host.h" |
| 17 #include "extensions/browser/process_manager.h" | 17 #include "extensions/browser/process_manager.h" |
| 18 #include "extensions/browser/process_manager_observer.h" | 18 #include "extensions/browser/process_manager_observer.h" |
| 19 #include "extensions/common/extension_messages.h" | 19 #include "extensions/common/extension_messages.h" |
| 20 #include "extensions/common/manifest_handlers/background_info.h" | 20 #include "extensions/common/manifest_handlers/background_info.h" |
| 21 | 21 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 51 Observe(tab); | 51 Observe(tab); |
| 52 } | 52 } |
| 53 | 53 |
| 54 private: | 54 private: |
| 55 // content::WebContentsObserver overrides: | 55 // content::WebContentsObserver overrides: |
| 56 void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) | 56 void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) |
| 57 override { | 57 override { |
| 58 port_->UnregisterFrame(render_frame_host); | 58 port_->UnregisterFrame(render_frame_host); |
| 59 } | 59 } |
| 60 | 60 |
| 61 void DidNavigateAnyFrame(content::RenderFrameHost* render_frame_host, | 61 void DidFinishNavigation( |
| 62 const content::LoadCommittedDetails& details, | 62 content::NavigationHandle* navigation_handle) override { |
| 63 const content::FrameNavigateParams&) override { | 63 if (navigation_handle->HasCommitted() && !navigation_handle->IsSamePage()) |
| 64 if (!details.is_in_page) | 64 port_->UnregisterFrame(navigation_handle->GetRenderFrameHost()); |
| 65 port_->UnregisterFrame(render_frame_host); | |
| 66 } | 65 } |
| 67 | 66 |
| 68 void DidDetachInterstitialPage() override { | 67 void DidDetachInterstitialPage() override { |
| 69 if (interstitial_frame_) | 68 if (interstitial_frame_) |
| 70 port_->UnregisterFrame(interstitial_frame_); | 69 port_->UnregisterFrame(interstitial_frame_); |
| 71 } | 70 } |
| 72 | 71 |
| 73 // extensions::ProcessManagerObserver overrides: | 72 // extensions::ProcessManagerObserver overrides: |
| 74 void OnExtensionFrameUnregistered( | 73 void OnExtensionFrameUnregistered( |
| 75 const std::string& extension_id, | 74 const std::string& extension_id, |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 return; | 299 return; |
| 301 } | 300 } |
| 302 for (content::RenderFrameHost* rfh : frames_) { | 301 for (content::RenderFrameHost* rfh : frames_) { |
| 303 IPC::Message* msg_copy = new IPC::Message(*msg); | 302 IPC::Message* msg_copy = new IPC::Message(*msg); |
| 304 msg_copy->set_routing_id(rfh->GetRoutingID()); | 303 msg_copy->set_routing_id(rfh->GetRoutingID()); |
| 305 rfh->Send(msg_copy); | 304 rfh->Send(msg_copy); |
| 306 } | 305 } |
| 307 } | 306 } |
| 308 | 307 |
| 309 } // namespace extensions | 308 } // namespace extensions |
| OLD | NEW |