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

Side by Side Diff: content/browser/tab_contents/interstitial_page.cc

Issue 7327007: Moving notification types which are chrome specific to a new header file chrome_notification_type... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/tab_contents/interstitial_page.h" 5 #include "content/browser/tab_contents/interstitial_page.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 } 197 }
198 } 198 }
199 199
200 // Block the resource requests for the render view host while it is hidden. 200 // Block the resource requests for the render view host while it is hidden.
201 TakeActionOnResourceDispatcher(BLOCK); 201 TakeActionOnResourceDispatcher(BLOCK);
202 // We need to be notified when the RenderViewHost is destroyed so we can 202 // We need to be notified when the RenderViewHost is destroyed so we can
203 // cancel the blocked requests. We cannot do that on 203 // cancel the blocked requests. We cannot do that on
204 // NOTIFY_TAB_CONTENTS_DESTROYED as at that point the RenderViewHost has 204 // NOTIFY_TAB_CONTENTS_DESTROYED as at that point the RenderViewHost has
205 // already been destroyed. 205 // already been destroyed.
206 notification_registrar_.Add( 206 notification_registrar_.Add(
207 this, NotificationType::RENDER_WIDGET_HOST_DESTROYED, 207 this, content::NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED,
208 Source<RenderWidgetHost>(tab_->render_view_host())); 208 Source<RenderWidgetHost>(tab_->render_view_host()));
209 209
210 // Update the tab_to_interstitial_page_ map. 210 // Update the tab_to_interstitial_page_ map.
211 iter = tab_to_interstitial_page_->find(tab_); 211 iter = tab_to_interstitial_page_->find(tab_);
212 DCHECK(iter == tab_to_interstitial_page_->end()); 212 DCHECK(iter == tab_to_interstitial_page_->end());
213 (*tab_to_interstitial_page_)[tab_] = this; 213 (*tab_to_interstitial_page_)[tab_] = this;
214 214
215 if (new_navigation_) { 215 if (new_navigation_) {
216 NavigationEntry* entry = new NavigationEntry; 216 NavigationEntry* entry = new NavigationEntry;
217 entry->set_url(url_); 217 entry->set_url(url_);
218 entry->set_virtual_url(url_); 218 entry->set_virtual_url(url_);
219 entry->set_page_type(INTERSTITIAL_PAGE); 219 entry->set_page_type(INTERSTITIAL_PAGE);
220 220
221 // Give sub-classes a chance to set some states on the navigation entry. 221 // Give sub-classes a chance to set some states on the navigation entry.
222 UpdateEntry(entry); 222 UpdateEntry(entry);
223 223
224 tab_->controller().AddTransientEntry(entry); 224 tab_->controller().AddTransientEntry(entry);
225 } 225 }
226 226
227 DCHECK(!render_view_host_); 227 DCHECK(!render_view_host_);
228 render_view_host_ = CreateRenderViewHost(); 228 render_view_host_ = CreateRenderViewHost();
229 CreateTabContentsView(); 229 CreateTabContentsView();
230 230
231 std::string data_url = "data:text/html;charset=utf-8," + 231 std::string data_url = "data:text/html;charset=utf-8," +
232 EscapePath(GetHTMLContents()); 232 EscapePath(GetHTMLContents());
233 render_view_host_->NavigateToURL(GURL(data_url)); 233 render_view_host_->NavigateToURL(GURL(data_url));
234 234
235 notification_registrar_.Add(this, NotificationType::TAB_CONTENTS_DESTROYED, 235 notification_registrar_.Add(this,
236 content::NOTIFICATION_TAB_CONTENTS_DESTROYED,
236 Source<TabContents>(tab_)); 237 Source<TabContents>(tab_));
237 notification_registrar_.Add(this, NotificationType::NAV_ENTRY_COMMITTED, 238 notification_registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED,
238 Source<NavigationController>(&tab_->controller())); 239 Source<NavigationController>(&tab_->controller()));
239 notification_registrar_.Add(this, NotificationType::NAV_ENTRY_PENDING, 240 notification_registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_PENDING,
240 Source<NavigationController>(&tab_->controller())); 241 Source<NavigationController>(&tab_->controller()));
241 } 242 }
242 243
243 void InterstitialPage::Hide() { 244 void InterstitialPage::Hide() {
244 RenderWidgetHostView* old_view = tab_->render_view_host()->view(); 245 RenderWidgetHostView* old_view = tab_->render_view_host()->view();
245 if (tab_->interstitial_page() == this && old_view && !old_view->IsShowing()) { 246 if (tab_->interstitial_page() == this && old_view && !old_view->IsShowing()) {
246 // Show the original RVH since we're going away. Note it might not exist if 247 // Show the original RVH since we're going away. Note it might not exist if
247 // the renderer crashed while the interstitial was showing. 248 // the renderer crashed while the interstitial was showing.
248 // Note that it is important that we don't call Show() if the view is 249 // Note that it is important that we don't call Show() if the view is
249 // already showing. That would result in bad things (unparented HWND on 250 // already showing. That would result in bad things (unparented HWND on
(...skipping 14 matching lines...) Expand all
264 tab_->remove_interstitial_page(); 265 tab_->remove_interstitial_page();
265 // Let's revert to the original title if necessary. 266 // Let's revert to the original title if necessary.
266 NavigationEntry* entry = tab_->controller().GetActiveEntry(); 267 NavigationEntry* entry = tab_->controller().GetActiveEntry();
267 if (!new_navigation_ && should_revert_tab_title_) { 268 if (!new_navigation_ && should_revert_tab_title_) {
268 entry->set_title(WideToUTF16Hack(original_tab_title_)); 269 entry->set_title(WideToUTF16Hack(original_tab_title_));
269 tab_->NotifyNavigationStateChanged(TabContents::INVALIDATE_TITLE); 270 tab_->NotifyNavigationStateChanged(TabContents::INVALIDATE_TITLE);
270 } 271 }
271 delete this; 272 delete this;
272 } 273 }
273 274
274 void InterstitialPage::Observe(NotificationType type, 275 void InterstitialPage::Observe(int type,
275 const NotificationSource& source, 276 const NotificationSource& source,
276 const NotificationDetails& details) { 277 const NotificationDetails& details) {
277 switch (type.value) { 278 switch (type) {
278 case NotificationType::NAV_ENTRY_PENDING: 279 case content::NOTIFICATION_NAV_ENTRY_PENDING:
279 // We are navigating away from the interstitial (the user has typed a URL 280 // We are navigating away from the interstitial (the user has typed a URL
280 // in the location bar or clicked a bookmark). Make sure clicking on the 281 // in the location bar or clicked a bookmark). Make sure clicking on the
281 // interstitial will have no effect. Also cancel any blocked requests 282 // interstitial will have no effect. Also cancel any blocked requests
282 // on the ResourceDispatcherHost. Note that when we get this notification 283 // on the ResourceDispatcherHost. Note that when we get this notification
283 // the RenderViewHost has not yet navigated so we'll unblock the 284 // the RenderViewHost has not yet navigated so we'll unblock the
284 // RenderViewHost before the resource request for the new page we are 285 // RenderViewHost before the resource request for the new page we are
285 // navigating arrives in the ResourceDispatcherHost. This ensures that 286 // navigating arrives in the ResourceDispatcherHost. This ensures that
286 // request won't be blocked if the same RenderViewHost was used for the 287 // request won't be blocked if the same RenderViewHost was used for the
287 // new navigation. 288 // new navigation.
288 Disable(); 289 Disable();
289 TakeActionOnResourceDispatcher(CANCEL); 290 TakeActionOnResourceDispatcher(CANCEL);
290 break; 291 break;
291 case NotificationType::RENDER_WIDGET_HOST_DESTROYED: 292 case content::NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED:
292 if (action_taken_ == NO_ACTION) { 293 if (action_taken_ == NO_ACTION) {
293 // The RenderViewHost is being destroyed (as part of the tab being 294 // The RenderViewHost is being destroyed (as part of the tab being
294 // closed), make sure we clear the blocked requests. 295 // closed), make sure we clear the blocked requests.
295 RenderViewHost* rvh = Source<RenderViewHost>(source).ptr(); 296 RenderViewHost* rvh = Source<RenderViewHost>(source).ptr();
296 DCHECK(rvh->process()->id() == original_child_id_ && 297 DCHECK(rvh->process()->id() == original_child_id_ &&
297 rvh->routing_id() == original_rvh_id_); 298 rvh->routing_id() == original_rvh_id_);
298 TakeActionOnResourceDispatcher(CANCEL); 299 TakeActionOnResourceDispatcher(CANCEL);
299 } 300 }
300 break; 301 break;
301 case NotificationType::TAB_CONTENTS_DESTROYED: 302 case content::NOTIFICATION_TAB_CONTENTS_DESTROYED:
302 case NotificationType::NAV_ENTRY_COMMITTED: 303 case content::NOTIFICATION_NAV_ENTRY_COMMITTED:
303 if (action_taken_ == NO_ACTION) { 304 if (action_taken_ == NO_ACTION) {
304 // We are navigating away from the interstitial or closing a tab with an 305 // We are navigating away from the interstitial or closing a tab with an
305 // interstitial. Default to DontProceed(). We don't just call Hide as 306 // interstitial. Default to DontProceed(). We don't just call Hide as
306 // subclasses will almost certainly override DontProceed to do some work 307 // subclasses will almost certainly override DontProceed to do some work
307 // (ex: close pending connections). 308 // (ex: close pending connections).
308 DontProceed(); 309 DontProceed();
309 } else { 310 } else {
310 // User decided to proceed and either the navigation was committed or 311 // User decided to proceed and either the navigation was committed or
311 // the tab was closed before that. 312 // the tab was closed before that.
312 Hide(); 313 Hide();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 352
352 // The RenderViewHost has loaded its contents, we can show it now. 353 // The RenderViewHost has loaded its contents, we can show it now.
353 render_view_host_->view()->Show(); 354 render_view_host_->view()->Show();
354 tab_->set_interstitial_page(this); 355 tab_->set_interstitial_page(this);
355 356
356 // This notification hides the bookmark bar. Note that this has to happen 357 // This notification hides the bookmark bar. Note that this has to happen
357 // after the interstitial page was registered with |tab_|, since there will be 358 // after the interstitial page was registered with |tab_|, since there will be
358 // a callback to |tab_| testing if an interstitial page is showing before 359 // a callback to |tab_| testing if an interstitial page is showing before
359 // hiding the bookmark bar. 360 // hiding the bookmark bar.
360 NotificationService::current()->Notify( 361 NotificationService::current()->Notify(
361 NotificationType::INTERSTITIAL_ATTACHED, 362 content::NOTIFICATION_INTERSTITIAL_ATTACHED,
362 Source<TabContents>(tab_), 363 Source<TabContents>(tab_),
363 NotificationService::NoDetails()); 364 NotificationService::NoDetails());
364 365
365 RenderWidgetHostView* rwh_view = tab_->render_view_host()->view(); 366 RenderWidgetHostView* rwh_view = tab_->render_view_host()->view();
366 367
367 // The RenderViewHost may already have crashed before we even get here. 368 // The RenderViewHost may already have crashed before we even get here.
368 if (rwh_view) { 369 if (rwh_view) {
369 // If the page has focus, focus the interstitial. 370 // If the page has focus, focus the interstitial.
370 if (rwh_view->HasFocus()) 371 if (rwh_view->HasFocus())
371 Focus(); 372 Focus();
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
724 725
725 void InterstitialPage::UpdateInspectorSetting(const std::string& key, 726 void InterstitialPage::UpdateInspectorSetting(const std::string& key,
726 const std::string& value) { 727 const std::string& value) {
727 RenderViewHostDelegateHelper::UpdateInspectorSetting( 728 RenderViewHostDelegateHelper::UpdateInspectorSetting(
728 tab_->profile(), key, value); 729 tab_->profile(), key, value);
729 } 730 }
730 731
731 void InterstitialPage::ClearInspectorSettings() { 732 void InterstitialPage::ClearInspectorSettings() {
732 RenderViewHostDelegateHelper::ClearInspectorSettings(tab_->profile()); 733 RenderViewHostDelegateHelper::ClearInspectorSettings(tab_->profile());
733 } 734 }
OLDNEW
« no previous file with comments | « content/browser/tab_contents/interstitial_page.h ('k') | content/browser/tab_contents/navigation_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698