| 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 #ifndef CONTENT_BROWSER_WEB_CONTENTS_INTERSTITIAL_PAGE_IMPL_H_ | 5 #ifndef CONTENT_BROWSER_WEB_CONTENTS_INTERSTITIAL_PAGE_IMPL_H_ |
| 6 #define CONTENT_BROWSER_WEB_CONTENTS_INTERSTITIAL_PAGE_IMPL_H_ | 6 #define CONTENT_BROWSER_WEB_CONTENTS_INTERSTITIAL_PAGE_IMPL_H_ |
| 7 | 7 |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/memory/weak_ptr.h" | 10 #include "base/memory/weak_ptr.h" |
| 11 #include "base/process_util.h" | 11 #include "base/process_util.h" |
| 12 #include "content/browser/renderer_host/render_view_host_delegate.h" | 12 #include "content/browser/renderer_host/render_view_host_delegate.h" |
| 13 #include "content/browser/renderer_host/render_widget_host_delegate.h" | 13 #include "content/browser/renderer_host/render_widget_host_delegate.h" |
| 14 #include "content/public/browser/interstitial_page.h" | 14 #include "content/public/browser/interstitial_page.h" |
| 15 #include "content/public/browser/notification_observer.h" | 15 #include "content/public/browser/notification_observer.h" |
| 16 #include "content/public/browser/notification_registrar.h" | 16 #include "content/public/browser/notification_registrar.h" |
| 17 #include "content/public/browser/web_contents_observer.h" |
| 17 #include "content/public/common/renderer_preferences.h" | 18 #include "content/public/common/renderer_preferences.h" |
| 18 #include "googleurl/src/gurl.h" | 19 #include "googleurl/src/gurl.h" |
| 19 | 20 |
| 20 namespace content { | 21 namespace content { |
| 21 class NavigationEntry; | 22 class NavigationEntry; |
| 22 class RenderViewHostImpl; | 23 class RenderViewHostImpl; |
| 23 class RenderWidgetHostView; | 24 class RenderWidgetHostView; |
| 24 class WebContentsView; | 25 class WebContentsView; |
| 25 class WebContentsImpl; | 26 class WebContentsImpl; |
| 26 | 27 |
| 27 enum ResourceRequestAction { | 28 enum ResourceRequestAction { |
| 28 BLOCK, | 29 BLOCK, |
| 29 RESUME, | 30 RESUME, |
| 30 CANCEL | 31 CANCEL |
| 31 }; | 32 }; |
| 32 | 33 |
| 33 class CONTENT_EXPORT InterstitialPageImpl | 34 class CONTENT_EXPORT InterstitialPageImpl |
| 34 : public NON_EXPORTED_BASE(InterstitialPage), | 35 : public NON_EXPORTED_BASE(InterstitialPage), |
| 35 public NotificationObserver, | 36 public NotificationObserver, |
| 37 public WebContentsObserver, |
| 36 public RenderViewHostDelegate, | 38 public RenderViewHostDelegate, |
| 37 public RenderWidgetHostDelegate { | 39 public RenderWidgetHostDelegate { |
| 38 public: | 40 public: |
| 39 // The different state of actions the user can take in an interstitial. | 41 // The different state of actions the user can take in an interstitial. |
| 40 enum ActionState { | 42 enum ActionState { |
| 41 NO_ACTION, // No action has been taken yet. | 43 NO_ACTION, // No action has been taken yet. |
| 42 PROCEED_ACTION, // "Proceed" was selected. | 44 PROCEED_ACTION, // "Proceed" was selected. |
| 43 DONT_PROCEED_ACTION // "Don't proceed" was selected. | 45 DONT_PROCEED_ACTION // "Don't proceed" was selected. |
| 44 }; | 46 }; |
| 45 | 47 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 // the RenderViewHost to properly route gestures to the interstitial. | 84 // the RenderViewHost to properly route gestures to the interstitial. |
| 83 RenderViewHost* GetRenderViewHost() const; | 85 RenderViewHost* GetRenderViewHost() const; |
| 84 #endif | 86 #endif |
| 85 | 87 |
| 86 protected: | 88 protected: |
| 87 // NotificationObserver method: | 89 // NotificationObserver method: |
| 88 virtual void Observe(int type, | 90 virtual void Observe(int type, |
| 89 const NotificationSource& source, | 91 const NotificationSource& source, |
| 90 const NotificationDetails& details) OVERRIDE; | 92 const NotificationDetails& details) OVERRIDE; |
| 91 | 93 |
| 94 // WebContentsObserver implementation: |
| 95 virtual void WebContentsDestroyed(WebContents* web_contents) OVERRIDE; |
| 96 |
| 92 // RenderViewHostDelegate implementation: | 97 // RenderViewHostDelegate implementation: |
| 93 virtual RenderViewHostDelegateView* GetDelegateView() OVERRIDE; | 98 virtual RenderViewHostDelegateView* GetDelegateView() OVERRIDE; |
| 94 virtual const GURL& GetURL() const OVERRIDE; | 99 virtual const GURL& GetURL() const OVERRIDE; |
| 95 virtual void RenderViewTerminated(RenderViewHost* render_view_host, | 100 virtual void RenderViewTerminated(RenderViewHost* render_view_host, |
| 96 base::TerminationStatus status, | 101 base::TerminationStatus status, |
| 97 int error_code) OVERRIDE; | 102 int error_code) OVERRIDE; |
| 98 virtual void DidNavigate( | 103 virtual void DidNavigate( |
| 99 RenderViewHost* render_view_host, | 104 RenderViewHost* render_view_host, |
| 100 const ViewHostMsg_FrameNavigate_Params& params) OVERRIDE; | 105 const ViewHostMsg_FrameNavigate_Params& params) OVERRIDE; |
| 101 virtual void UpdateTitle(RenderViewHost* render_view_host, | 106 virtual void UpdateTitle(RenderViewHost* render_view_host, |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 class InterstitialPageRVHDelegateView; | 160 class InterstitialPageRVHDelegateView; |
| 156 | 161 |
| 157 // Disable the interstitial: | 162 // Disable the interstitial: |
| 158 // - if it is not yet showing, then it won't be shown. | 163 // - if it is not yet showing, then it won't be shown. |
| 159 // - any command sent by the RenderViewHost will be ignored. | 164 // - any command sent by the RenderViewHost will be ignored. |
| 160 void Disable(); | 165 void Disable(); |
| 161 | 166 |
| 162 // Shutdown the RVH. We will be deleted by the time this method returns. | 167 // Shutdown the RVH. We will be deleted by the time this method returns. |
| 163 void Shutdown(RenderViewHostImpl* render_view_host); | 168 void Shutdown(RenderViewHostImpl* render_view_host); |
| 164 | 169 |
| 170 void OnNavigatingAwayOrTabClosing(); |
| 171 |
| 165 // Executes the passed action on the ResourceDispatcher (on the IO thread). | 172 // Executes the passed action on the ResourceDispatcher (on the IO thread). |
| 166 // Used to block/resume/cancel requests for the RenderViewHost hidden by this | 173 // Used to block/resume/cancel requests for the RenderViewHost hidden by this |
| 167 // interstitial. | 174 // interstitial. |
| 168 void TakeActionOnResourceDispatcher(ResourceRequestAction action); | 175 void TakeActionOnResourceDispatcher(ResourceRequestAction action); |
| 169 | 176 |
| 170 // The contents in which we are displayed. This is valid until Hide is | 177 // The contents in which we are displayed. This is valid until Hide is |
| 171 // called, at which point it will be set to NULL because the WebContents | 178 // called, at which point it will be set to NULL because the WebContents |
| 172 // itself may be deleted. | 179 // itself may be deleted. |
| 173 WebContentsImpl* web_contents_; | 180 WebContentsImpl* web_contents_; |
| 174 | 181 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 scoped_ptr<InterstitialPageDelegate> delegate_; | 240 scoped_ptr<InterstitialPageDelegate> delegate_; |
| 234 | 241 |
| 235 base::WeakPtrFactory<InterstitialPageImpl> weak_ptr_factory_; | 242 base::WeakPtrFactory<InterstitialPageImpl> weak_ptr_factory_; |
| 236 | 243 |
| 237 DISALLOW_COPY_AND_ASSIGN(InterstitialPageImpl); | 244 DISALLOW_COPY_AND_ASSIGN(InterstitialPageImpl); |
| 238 }; | 245 }; |
| 239 | 246 |
| 240 } // namespace content | 247 } // namespace content |
| 241 | 248 |
| 242 #endif // CONTENT_BROWSER_WEB_CONTENTS_INTERSTITIAL_PAGE_IMPL_H_ | 249 #endif // CONTENT_BROWSER_WEB_CONTENTS_INTERSTITIAL_PAGE_IMPL_H_ |
| OLD | NEW |