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 #include "chrome/browser/ui/browser_navigator.h" | 5 #include "chrome/browser/ui/browser_navigator.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
11 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
12 #include "chrome/browser/browser_about_handler.h" | 12 #include "chrome/browser/browser_about_handler.h" |
13 #include "chrome/browser/extensions/extension_service.h" | 13 #include "chrome/browser/extensions/extension_service.h" |
14 #include "chrome/browser/extensions/extension_tab_helper.h" | 14 #include "chrome/browser/extensions/extension_tab_helper.h" |
15 #include "chrome/browser/google/google_url_tracker.h" | 15 #include "chrome/browser/google/google_url_tracker.h" |
16 #include "chrome/browser/google/google_util.h" | 16 #include "chrome/browser/google/google_util.h" |
17 #include "chrome/browser/prefs/incognito_mode_prefs.h" | 17 #include "chrome/browser/prefs/incognito_mode_prefs.h" |
18 #include "chrome/browser/prefs/pref_service.h" | 18 #include "chrome/browser/prefs/pref_service.h" |
| 19 #include "chrome/browser/prerender/prerender_manager.h" |
| 20 #include "chrome/browser/prerender/prerender_manager_factory.h" |
19 #include "chrome/browser/profiles/profile.h" | 21 #include "chrome/browser/profiles/profile.h" |
20 #include "chrome/browser/rlz/rlz.h" | 22 #include "chrome/browser/rlz/rlz.h" |
21 #include "chrome/browser/tab_contents/tab_util.h" | 23 #include "chrome/browser/tab_contents/tab_util.h" |
22 #include "chrome/browser/tabs/tab_strip_model.h" | 24 #include "chrome/browser/tabs/tab_strip_model.h" |
23 #include "chrome/browser/ui/browser.h" | 25 #include "chrome/browser/ui/browser.h" |
24 #include "chrome/browser/ui/browser_list.h" | 26 #include "chrome/browser/ui/browser_list.h" |
25 #include "chrome/browser/ui/browser_window.h" | 27 #include "chrome/browser/ui/browser_window.h" |
26 #include "chrome/browser/ui/omnibox/location_bar.h" | 28 #include "chrome/browser/ui/omnibox/location_bar.h" |
27 #include "chrome/browser/ui/status_bubble.h" | 29 #include "chrome/browser/ui/status_bubble.h" |
28 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 30 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 extra_headers); | 354 extra_headers); |
353 } | 355 } |
354 } | 356 } |
355 } | 357 } |
356 } | 358 } |
357 } | 359 } |
358 #endif | 360 #endif |
359 #endif | 361 #endif |
360 } | 362 } |
361 | 363 |
| 364 // If a prerendered page exists for |url|, replace the page at |target_contents| |
| 365 // with it. |
| 366 bool SwapInPrerender(TabContentsWrapper* target_contents, const GURL& url) { |
| 367 prerender::PrerenderManager* prerender_manager = |
| 368 prerender::PrerenderManagerFactory::GetForProfile( |
| 369 target_contents->profile()); |
| 370 if (!prerender_manager) |
| 371 return false; |
| 372 return prerender_manager->MaybeUsePrerenderedPage( |
| 373 target_contents->web_contents(), url); |
| 374 } |
| 375 |
362 } // namespace | 376 } // namespace |
363 | 377 |
364 namespace browser { | 378 namespace browser { |
365 | 379 |
366 NavigateParams::NavigateParams( | 380 NavigateParams::NavigateParams( |
367 Browser* a_browser, | 381 Browser* a_browser, |
368 const GURL& a_url, | 382 const GURL& a_url, |
369 content::PageTransition a_transition) | 383 content::PageTransition a_transition) |
370 : url(a_url), | 384 : url(a_url), |
371 target_contents(NULL), | 385 target_contents(NULL), |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
526 } | 540 } |
527 | 541 |
528 if (user_initiated) { | 542 if (user_initiated) { |
529 params->target_contents->web_contents()->GetRenderViewHost()-> | 543 params->target_contents->web_contents()->GetRenderViewHost()-> |
530 delegate()->OnUserGesture(); | 544 delegate()->OnUserGesture(); |
531 } | 545 } |
532 | 546 |
533 InitializeExtraHeaders(params, params->target_contents->profile(), | 547 InitializeExtraHeaders(params, params->target_contents->profile(), |
534 &extra_headers); | 548 &extra_headers); |
535 | 549 |
| 550 if (SwapInPrerender(params->target_contents, url)) |
| 551 return; |
| 552 |
536 // Try to handle non-navigational URLs that popup dialogs and such, these | 553 // Try to handle non-navigational URLs that popup dialogs and such, these |
537 // should not actually navigate. | 554 // should not actually navigate. |
538 if (!HandleNonNavigationAboutURL(url)) { | 555 if (!HandleNonNavigationAboutURL(url)) { |
539 // Perform the actual navigation, tracking whether it came from the | 556 // Perform the actual navigation, tracking whether it came from the |
540 // renderer. | 557 // renderer. |
541 | 558 |
542 LoadURLInContents(params->target_contents->web_contents(), | 559 LoadURLInContents(params->target_contents->web_contents(), |
543 url, params, extra_headers); | 560 url, params, extra_headers); |
544 } | 561 } |
545 } else { | 562 } else { |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
678 popup_bounds.height() > max_height || | 695 popup_bounds.height() > max_height || |
679 popup_bounds.width() == 0 || | 696 popup_bounds.width() == 0 || |
680 popup_bounds.height() == 0) { | 697 popup_bounds.height() == 0) { |
681 return NEW_FOREGROUND_TAB; | 698 return NEW_FOREGROUND_TAB; |
682 } | 699 } |
683 return NEW_POPUP; | 700 return NEW_POPUP; |
684 } | 701 } |
685 #endif | 702 #endif |
686 | 703 |
687 } // namespace browser | 704 } // namespace browser |
OLD | NEW |