| Index: content/browser/tab_contents/interstitial_page.cc
|
| ===================================================================
|
| --- content/browser/tab_contents/interstitial_page.cc (revision 120576)
|
| +++ content/browser/tab_contents/interstitial_page.cc (working copy)
|
| @@ -24,6 +24,7 @@
|
| #include "content/common/view_messages.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/dom_operation_notification_details.h"
|
| +#include "content/public/browser/interstitial_page_delegate.h"
|
| #include "content/public/browser/invalidate_type.h"
|
| #include "content/public/browser/notification_service.h"
|
| #include "content/public/browser/notification_source.h"
|
| @@ -36,6 +37,7 @@
|
|
|
| using content::BrowserThread;
|
| using content::DomOperationNotificationDetails;
|
| +using content::InterstitialPageDelegate;
|
| using content::NavigationController;
|
| using content::NavigationEntry;
|
| using content::NavigationEntryImpl;
|
| @@ -117,13 +119,21 @@
|
| DISALLOW_COPY_AND_ASSIGN(InterstitialPageRVHViewDelegate);
|
| };
|
|
|
| +InterstitialPage* InterstitialPage::Create(WebContents* tab,
|
| + bool new_navigation,
|
| + const GURL& url,
|
| + InterstitialPageDelegate* delegate) {
|
| + return new InterstitialPage(tab, new_navigation, url, delegate);
|
| +}
|
| +
|
| // static
|
| InterstitialPage::InterstitialPageMap*
|
| InterstitialPage::tab_to_interstitial_page_ = NULL;
|
|
|
| InterstitialPage::InterstitialPage(WebContents* tab,
|
| bool new_navigation,
|
| - const GURL& url)
|
| + const GURL& url,
|
| + InterstitialPageDelegate* delegate)
|
| : tab_(static_cast<TabContents*>(tab)),
|
| url_(url),
|
| new_navigation_(new_navigation),
|
| @@ -138,7 +148,8 @@
|
| tab_was_loading_(false),
|
| resource_dispatcher_host_notified_(false),
|
| ALLOW_THIS_IN_INITIALIZER_LIST(rvh_view_delegate_(
|
| - new InterstitialPageRVHViewDelegate(this))) {
|
| + new InterstitialPageRVHViewDelegate(this))),
|
| + delegate_(delegate) {
|
| InitInterstitialPageMap();
|
| // It would be inconsistent to create an interstitial with no new navigation
|
| // (which is the case when the interstitial was triggered by a sub-resource on
|
| @@ -199,8 +210,8 @@
|
| entry->SetVirtualURL(url_);
|
| entry->set_page_type(content::PAGE_TYPE_INTERSTITIAL);
|
|
|
| - // Give sub-classes a chance to set some states on the navigation entry.
|
| - UpdateEntry(entry);
|
| + // Give delegates a chance to set some states on the navigation entry.
|
| + delegate_->OverrideEntry(entry);
|
|
|
| tab_->GetControllerImpl().AddTransientEntry(entry);
|
| }
|
| @@ -210,7 +221,7 @@
|
| CreateWebContentsView();
|
|
|
| std::string data_url = "data:text/html;charset=utf-8," +
|
| - net::EscapePath(GetHTMLContents());
|
| + net::EscapePath(delegate_->GetHTMLContents());
|
| render_view_host_->NavigateToURL(GURL(data_url));
|
|
|
| notification_registrar_.Add(this,
|
| @@ -310,7 +321,7 @@
|
| if (enabled()) {
|
| content::Details<DomOperationNotificationDetails> dom_op_details(
|
| details);
|
| - CommandReceived(dom_op_details->json);
|
| + delegate_->CommandReceived(dom_op_details->json);
|
| }
|
| break;
|
| default:
|
| @@ -416,6 +427,7 @@
|
|
|
| content::RendererPreferences InterstitialPage::GetRendererPrefs(
|
| content::BrowserContext* browser_context) const {
|
| + delegate_->OverrideRendererPrefs(&renderer_preferences_);
|
| return renderer_preferences_;
|
| }
|
|
|
| @@ -490,10 +502,6 @@
|
| }
|
| }
|
|
|
| -std::string InterstitialPage::GetHTMLContents() {
|
| - return std::string();
|
| -}
|
| -
|
| void InterstitialPage::DontProceed() {
|
| DCHECK(action_taken_ != DONT_PROCEED_ACTION);
|
|
|
| @@ -560,6 +568,10 @@
|
| render_view_host_->SetInitialFocus(reverse);
|
| }
|
|
|
| +content::InterstitialPageDelegate* InterstitialPage::GetDelegateForTesting() {
|
| + return delegate_.get();
|
| +}
|
| +
|
| content::ViewType InterstitialPage::GetRenderViewType() const {
|
| return content::VIEW_TYPE_INTERSTITIAL_PAGE;
|
| }
|
|
|