| 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 "content/browser/browser_plugin/test_browser_plugin_guest_delegate.h" | 5 #include "content/browser/browser_plugin/test_browser_plugin_guest_delegate.h" |
| 6 | 6 |
| 7 #include "content/browser/browser_plugin/browser_plugin_guest.h" | 7 #include "content/browser/browser_plugin/browser_plugin_guest.h" |
| 8 #include "content/browser/web_contents/web_contents_impl.h" | 8 #include "content/browser/web_contents/web_contents_impl.h" |
| 9 #include "content/public/browser/navigation_controller.h" | 9 #include "content/public/browser/navigation_controller.h" |
| 10 #include "content/public/common/referrer.h" | 10 #include "content/public/common/referrer.h" |
| 11 | 11 |
| 12 namespace content { | 12 namespace content { |
| 13 | 13 |
| 14 // This observer ensures that the TestBrowserPluginGuestDelegate destroys itself |
| 15 // when its embedder goes away. |
| 16 class TestBrowserPluginGuestDelegate::EmbedderWebContentsObserver : |
| 17 public WebContentsObserver { |
| 18 public: |
| 19 explicit EmbedderWebContentsObserver(TestBrowserPluginGuestDelegate* guest) |
| 20 : WebContentsObserver(guest->GetEmbedderWebContents()), |
| 21 guest_(guest) { |
| 22 } |
| 23 |
| 24 virtual ~EmbedderWebContentsObserver() { |
| 25 } |
| 26 |
| 27 // WebContentsObserver implementation. |
| 28 virtual void WebContentsDestroyed() OVERRIDE { |
| 29 guest_->Destroy(); |
| 30 } |
| 31 |
| 32 private: |
| 33 TestBrowserPluginGuestDelegate* guest_; |
| 34 |
| 35 DISALLOW_COPY_AND_ASSIGN(EmbedderWebContentsObserver); |
| 36 }; |
| 37 |
| 14 TestBrowserPluginGuestDelegate::TestBrowserPluginGuestDelegate( | 38 TestBrowserPluginGuestDelegate::TestBrowserPluginGuestDelegate( |
| 15 BrowserPluginGuest* guest) : | 39 BrowserPluginGuest* guest) : |
| 40 WebContentsObserver(guest->GetWebContents()), |
| 16 guest_(guest) { | 41 guest_(guest) { |
| 17 } | 42 } |
| 18 | 43 |
| 19 TestBrowserPluginGuestDelegate::~TestBrowserPluginGuestDelegate() { | 44 TestBrowserPluginGuestDelegate::~TestBrowserPluginGuestDelegate() { |
| 20 } | 45 } |
| 21 | 46 |
| 47 WebContents* TestBrowserPluginGuestDelegate::GetEmbedderWebContents() const { |
| 48 return guest_->embedder_web_contents(); |
| 49 } |
| 50 |
| 22 void TestBrowserPluginGuestDelegate::LoadURLWithParams( | 51 void TestBrowserPluginGuestDelegate::LoadURLWithParams( |
| 23 const GURL& url, | 52 const GURL& url, |
| 24 const Referrer& referrer, | 53 const Referrer& referrer, |
| 25 PageTransition transition_type, | 54 PageTransition transition_type, |
| 26 WebContents* web_contents) { | 55 WebContents* web_contents) { |
| 27 NavigationController::LoadURLParams load_url_params(url); | 56 NavigationController::LoadURLParams load_url_params(url); |
| 28 load_url_params.referrer = referrer; | 57 load_url_params.referrer = referrer; |
| 29 load_url_params.transition_type = transition_type; | 58 load_url_params.transition_type = transition_type; |
| 30 load_url_params.extra_headers = std::string(); | 59 load_url_params.extra_headers = std::string(); |
| 31 web_contents->GetController().LoadURLWithParams(load_url_params); | 60 web_contents->GetController().LoadURLWithParams(load_url_params); |
| 32 } | 61 } |
| 33 | 62 |
| 63 void TestBrowserPluginGuestDelegate::WebContentsDestroyed() { |
| 64 delete this; |
| 65 } |
| 66 |
| 67 void TestBrowserPluginGuestDelegate::DidAttach() { |
| 68 embedder_web_contents_observer_.reset( |
| 69 new EmbedderWebContentsObserver(this)); |
| 70 |
| 71 } |
| 72 |
| 34 void TestBrowserPluginGuestDelegate::Destroy() { | 73 void TestBrowserPluginGuestDelegate::Destroy() { |
| 35 if (!destruction_callback_.is_null()) | 74 if (!destruction_callback_.is_null()) |
| 36 destruction_callback_.Run(guest_->GetWebContents()); | 75 destruction_callback_.Run(); |
| 37 delete guest_->GetWebContents(); | 76 delete guest_->GetWebContents(); |
| 38 } | 77 } |
| 39 | 78 |
| 40 void TestBrowserPluginGuestDelegate::NavigateGuest(const std::string& src) { | 79 void TestBrowserPluginGuestDelegate::NavigateGuest(const std::string& src) { |
| 41 GURL url(src); | 80 GURL url(src); |
| 42 LoadURLWithParams(url, | 81 LoadURLWithParams(url, |
| 43 Referrer(), | 82 Referrer(), |
| 44 PAGE_TRANSITION_AUTO_TOPLEVEL, | 83 PAGE_TRANSITION_AUTO_TOPLEVEL, |
| 45 guest_->GetWebContents()); | 84 guest_->GetWebContents()); |
| 46 } | 85 } |
| 47 | 86 |
| 48 void TestBrowserPluginGuestDelegate::RegisterDestructionCallback( | 87 void TestBrowserPluginGuestDelegate::RegisterDestructionCallback( |
| 49 const DestructionCallback& callback) { | 88 const DestructionCallback& callback) { |
| 50 destruction_callback_ = callback; | 89 destruction_callback_ = callback; |
| 51 } | 90 } |
| 52 | 91 |
| 53 | 92 |
| 54 } // namespace content | 93 } // namespace content |
| OLD | NEW |