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

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

Issue 155071: Do some refactoring of renderer_host.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/tab_contents/interstitial_page.h" 5 #include "chrome/browser/tab_contents/interstitial_page.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/thread.h" 9 #include "base/thread.h"
10 #include "chrome/browser/browser_list.h" 10 #include "chrome/browser/browser_list.h"
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 // the tab was closed before that. 274 // the tab was closed before that.
275 Hide(); 275 Hide();
276 // WARNING: we are now deleted! 276 // WARNING: we are now deleted!
277 } 277 }
278 break; 278 break;
279 default: 279 default:
280 NOTREACHED(); 280 NOTREACHED();
281 } 281 }
282 } 282 }
283 283
284 RenderViewHostDelegate::View* InterstitialPage::GetViewDelegate() const {
285 return rvh_view_delegate_.get();
286 }
287
288 const GURL& InterstitialPage::GetURL() const {
289 return url_;
290 }
291
292 void InterstitialPage::RenderViewGone(RenderViewHost* render_view_host) {
293 // Our renderer died. This should not happen in normal cases.
294 // Just dismiss the interstitial.
295 DontProceed();
296 }
297
298 void InterstitialPage::DidNavigate(
299 RenderViewHost* render_view_host,
300 const ViewHostMsg_FrameNavigate_Params& params) {
301 // A fast user could have navigated away from the page that triggered the
302 // interstitial while the interstitial was loading, that would have disabled
303 // us. In that case we can dismiss ourselves.
304 if (!enabled_){
305 DontProceed();
306 return;
307 }
308
309 // The RenderViewHost has loaded its contents, we can show it now.
310 render_view_host_->view()->Show();
311 tab_->set_interstitial_page(this);
312
313 RenderWidgetHostView* rwh_view = tab_->render_view_host()->view();
314
315 // The RenderViewHost may already have crashed before we even get here.
316 if (rwh_view) {
317 // If the page has focus, focus the interstitial.
318 if (rwh_view->HasFocus())
319 Focus();
320
321 // Hide the original RVH since we're showing the interstitial instead.
322 rwh_view->Hide();
323 }
324
325 // Notify the tab we are not loading so the throbber is stopped. It also
326 // causes a NOTIFY_LOAD_STOP notification, that the AutomationProvider (used
327 // by the UI tests) expects to consider a navigation as complete. Without
328 // this, navigating in a UI test to a URL that triggers an interstitial would
329 // hang.
330 tab_->SetIsLoading(false, NULL);
331 }
332
333 void InterstitialPage::UpdateTitle(RenderViewHost* render_view_host,
334 int32 page_id,
335 const std::wstring& title) {
336 DCHECK(render_view_host == render_view_host_);
337 NavigationEntry* entry = tab_->controller().GetActiveEntry();
338 // If this interstitial is shown on an existing navigation entry, we'll need
339 // to remember its title so we can revert to it when hidden.
340 if (!new_navigation_ && !should_revert_tab_title_) {
341 original_tab_title_ = UTF16ToWideHack(entry->title());
342 should_revert_tab_title_ = true;
343 }
344 entry->set_title(WideToUTF16Hack(title));
345 tab_->NotifyNavigationStateChanged(TabContents::INVALIDATE_TAB);
346 }
347
348 void InterstitialPage::DomOperationResponse(const std::string& json_string,
349 int automation_id) {
350 if (enabled_)
351 CommandReceived(json_string);
352 }
353
354 GURL InterstitialPage::GetAlternateErrorPageURL() const {
355 return GURL();
356 }
357
358 RendererPreferences InterstitialPage::GetRendererPrefs() const {
359 return RendererPreferences();
360 }
361
362 WebPreferences InterstitialPage::GetWebkitPrefs() {
363 return WebPreferences();
364 }
365
366 gfx::Rect InterstitialPage::GetRootWindowResizerRect() const {
367 return gfx::Rect();
368 }
369
284 RenderViewHost* InterstitialPage::CreateRenderViewHost() { 370 RenderViewHost* InterstitialPage::CreateRenderViewHost() {
285 RenderViewHost* render_view_host = new RenderViewHost( 371 RenderViewHost* render_view_host = new RenderViewHost(
286 SiteInstance::CreateSiteInstance(tab()->profile()), 372 SiteInstance::CreateSiteInstance(tab()->profile()),
287 this, MSG_ROUTING_NONE, NULL); 373 this, MSG_ROUTING_NONE, NULL);
288 return render_view_host; 374 return render_view_host;
289 } 375 }
290 376
291 TabContentsView* InterstitialPage::CreateTabContentsView() { 377 TabContentsView* InterstitialPage::CreateTabContentsView() {
292 TabContentsView* tab_contents_view = tab()->view(); 378 TabContentsView* tab_contents_view = tab()->view();
293 RenderWidgetHostView* view = 379 RenderWidgetHostView* view =
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 459
374 void InterstitialPage::Focus() { 460 void InterstitialPage::Focus() {
375 // Focus the native window. 461 // Focus the native window.
376 render_view_host_->view()->Focus(); 462 render_view_host_->view()->Focus();
377 } 463 }
378 464
379 void InterstitialPage::FocusThroughTabTraversal(bool reverse) { 465 void InterstitialPage::FocusThroughTabTraversal(bool reverse) {
380 render_view_host_->SetInitialFocus(reverse); 466 render_view_host_->SetInitialFocus(reverse);
381 } 467 }
382 468
383 void InterstitialPage::DidNavigate(
384 RenderViewHost* render_view_host,
385 const ViewHostMsg_FrameNavigate_Params& params) {
386 // A fast user could have navigated away from the page that triggered the
387 // interstitial while the interstitial was loading, that would have disabled
388 // us. In that case we can dismiss ourselves.
389 if (!enabled_){
390 DontProceed();
391 return;
392 }
393
394 // The RenderViewHost has loaded its contents, we can show it now.
395 render_view_host_->view()->Show();
396 tab_->set_interstitial_page(this);
397
398 RenderWidgetHostView* rwh_view = tab_->render_view_host()->view();
399
400 // The RenderViewHost may already have crashed before we even get here.
401 if (rwh_view) {
402 // If the page has focus, focus the interstitial.
403 if (rwh_view->HasFocus())
404 Focus();
405
406 // Hide the original RVH since we're showing the interstitial instead.
407 rwh_view->Hide();
408 }
409
410 // Notify the tab we are not loading so the throbber is stopped. It also
411 // causes a NOTIFY_LOAD_STOP notification, that the AutomationProvider (used
412 // by the UI tests) expects to consider a navigation as complete. Without
413 // this, navigating in a UI test to a URL that triggers an interstitial would
414 // hang.
415 tab_->SetIsLoading(false, NULL);
416 }
417
418 void InterstitialPage::RenderViewGone(RenderViewHost* render_view_host) {
419 // Our renderer died. This should not happen in normal cases.
420 // Just dismiss the interstitial.
421 DontProceed();
422 }
423
424 void InterstitialPage::DomOperationResponse(const std::string& json_string,
425 int automation_id) {
426 if (enabled_)
427 CommandReceived(json_string);
428 }
429
430 void InterstitialPage::UpdateTitle(RenderViewHost* render_view_host,
431 int32 page_id,
432 const std::wstring& title) {
433 DCHECK(render_view_host == render_view_host_);
434 NavigationEntry* entry = tab_->controller().GetActiveEntry();
435 // If this interstitial is shown on an existing navigation entry, we'll need
436 // to remember its title so we can revert to it when hidden.
437 if (!new_navigation_ && !should_revert_tab_title_) {
438 original_tab_title_ = UTF16ToWideHack(entry->title());
439 should_revert_tab_title_ = true;
440 }
441 entry->set_title(WideToUTF16Hack(title));
442 tab_->NotifyNavigationStateChanged(TabContents::INVALIDATE_TAB);
443 }
444
445 RenderViewHostDelegate::View* InterstitialPage::GetViewDelegate() const {
446 return rvh_view_delegate_.get();
447 }
448
449 void InterstitialPage::Disable() { 469 void InterstitialPage::Disable() {
450 enabled_ = false; 470 enabled_ = false;
451 } 471 }
452 472
453 void InterstitialPage::TakeActionOnResourceDispatcher( 473 void InterstitialPage::TakeActionOnResourceDispatcher(
454 ResourceRequestAction action) { 474 ResourceRequestAction action) {
455 DCHECK(MessageLoop::current() == ui_loop_) << 475 DCHECK(MessageLoop::current() == ui_loop_) <<
456 "TakeActionOnResourceDispatcher should be called on the main thread."; 476 "TakeActionOnResourceDispatcher should be called on the main thread.";
457 477
458 if (action == CANCEL || action == RESUME) { 478 if (action == CANCEL || action == RESUME) {
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 580
561 void InterstitialPage::InterstitialPageRVHViewDelegate::HandleMouseLeave() { 581 void InterstitialPage::InterstitialPageRVHViewDelegate::HandleMouseLeave() {
562 if (interstitial_page_->tab() && interstitial_page_->tab()->GetViewDelegate()) 582 if (interstitial_page_->tab() && interstitial_page_->tab()->GetViewDelegate())
563 interstitial_page_->tab()->GetViewDelegate()->HandleMouseLeave(); 583 interstitial_page_->tab()->GetViewDelegate()->HandleMouseLeave();
564 } 584 }
565 585
566 void InterstitialPage::InterstitialPageRVHViewDelegate::OnFindReply( 586 void InterstitialPage::InterstitialPageRVHViewDelegate::OnFindReply(
567 int request_id, int number_of_matches, const gfx::Rect& selection_rect, 587 int request_id, int number_of_matches, const gfx::Rect& selection_rect,
568 int active_match_ordinal, bool final_update) { 588 int active_match_ordinal, bool final_update) {
569 } 589 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698