OLD | NEW |
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 "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" |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 disposition(CURRENT_TAB), | 343 disposition(CURRENT_TAB), |
344 transition(a_transition), | 344 transition(a_transition), |
345 is_renderer_initiated(false), | 345 is_renderer_initiated(false), |
346 tabstrip_index(-1), | 346 tabstrip_index(-1), |
347 tabstrip_add_types(TabStripModel::ADD_ACTIVE), | 347 tabstrip_add_types(TabStripModel::ADD_ACTIVE), |
348 window_action(NO_ACTION), | 348 window_action(NO_ACTION), |
349 user_gesture(true), | 349 user_gesture(true), |
350 path_behavior(RESPECT), | 350 path_behavior(RESPECT), |
351 ref_behavior(IGNORE_REF), | 351 ref_behavior(IGNORE_REF), |
352 browser(a_browser), | 352 browser(a_browser), |
353 profile(NULL) { | 353 profile(NULL), |
| 354 opener_browsing_instance_frame_id(-1) { |
354 } | 355 } |
355 | 356 |
356 NavigateParams::NavigateParams(Browser* a_browser, | 357 NavigateParams::NavigateParams(Browser* a_browser, |
357 TabContentsWrapper* a_target_contents) | 358 TabContentsWrapper* a_target_contents) |
358 : target_contents(a_target_contents), | 359 : target_contents(a_target_contents), |
359 source_contents(NULL), | 360 source_contents(NULL), |
360 disposition(CURRENT_TAB), | 361 disposition(CURRENT_TAB), |
361 transition(content::PAGE_TRANSITION_LINK), | 362 transition(content::PAGE_TRANSITION_LINK), |
362 is_renderer_initiated(false), | 363 is_renderer_initiated(false), |
363 tabstrip_index(-1), | 364 tabstrip_index(-1), |
364 tabstrip_add_types(TabStripModel::ADD_ACTIVE), | 365 tabstrip_add_types(TabStripModel::ADD_ACTIVE), |
365 window_action(NO_ACTION), | 366 window_action(NO_ACTION), |
366 user_gesture(true), | 367 user_gesture(true), |
367 path_behavior(RESPECT), | 368 path_behavior(RESPECT), |
368 ref_behavior(IGNORE_REF), | 369 ref_behavior(IGNORE_REF), |
369 browser(a_browser), | 370 browser(a_browser), |
370 profile(NULL) { | 371 profile(NULL), |
| 372 opener_browsing_instance_frame_id(-1) { |
371 } | 373 } |
372 | 374 |
373 NavigateParams::~NavigateParams() { | 375 NavigateParams::~NavigateParams() { |
374 } | 376 } |
375 | 377 |
376 void Navigate(NavigateParams* params) { | 378 void Navigate(NavigateParams* params) { |
377 Browser* source_browser = params->browser; | 379 Browser* source_browser = params->browser; |
378 | 380 |
379 if (!AdjustNavigateParamsForURL(params)) | 381 if (!AdjustNavigateParamsForURL(params)) |
380 return; | 382 return; |
(...skipping 11 matching lines...) Expand all Loading... |
392 if (!params->browser) | 394 if (!params->browser) |
393 return; | 395 return; |
394 | 396 |
395 // Navigate() must not return early after this point. | 397 // Navigate() must not return early after this point. |
396 | 398 |
397 if (GetSourceProfile(params, source_browser) != params->browser->profile()) { | 399 if (GetSourceProfile(params, source_browser) != params->browser->profile()) { |
398 // A tab is being opened from a link from a different profile, we must reset | 400 // A tab is being opened from a link from a different profile, we must reset |
399 // source information that may cause state to be shared. | 401 // source information that may cause state to be shared. |
400 params->source_contents = NULL; | 402 params->source_contents = NULL; |
401 params->referrer = GURL(); | 403 params->referrer = GURL(); |
| 404 params->opener_browsing_instance_frame_id = -1; |
402 } | 405 } |
403 | 406 |
404 // Make sure the Browser is shown if params call for it. | 407 // Make sure the Browser is shown if params call for it. |
405 ScopedBrowserDisplayer displayer(params); | 408 ScopedBrowserDisplayer displayer(params); |
406 | 409 |
407 // Makes sure any TabContents created by this function is destroyed if | 410 // Makes sure any TabContents created by this function is destroyed if |
408 // not properly added to a tab strip. | 411 // not properly added to a tab strip. |
409 ScopedTargetContentsOwner target_contents_owner(params); | 412 ScopedTargetContentsOwner target_contents_owner(params); |
410 | 413 |
411 // Some dispositions need coercion to base types. | 414 // Some dispositions need coercion to base types. |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
494 InitializeExtraHeaders(params, params->target_contents->profile(), | 497 InitializeExtraHeaders(params, params->target_contents->profile(), |
495 &extra_headers); | 498 &extra_headers); |
496 | 499 |
497 // Try to handle non-navigational URLs that popup dialogs and such, these | 500 // Try to handle non-navigational URLs that popup dialogs and such, these |
498 // should not actually navigate. | 501 // should not actually navigate. |
499 if (!HandleNonNavigationAboutURL(url)) { | 502 if (!HandleNonNavigationAboutURL(url)) { |
500 // Perform the actual navigation, tracking whether it came from the | 503 // Perform the actual navigation, tracking whether it came from the |
501 // renderer. | 504 // renderer. |
502 if (params->is_renderer_initiated) { | 505 if (params->is_renderer_initiated) { |
503 params->target_contents->controller().LoadURLFromRenderer( | 506 params->target_contents->controller().LoadURLFromRenderer( |
504 url, params->referrer, params->transition, extra_headers); | 507 url, params->referrer, params->transition, extra_headers, |
| 508 params->opener_browsing_instance_frame_id); |
505 } else { | 509 } else { |
506 params->target_contents->controller().LoadURL( | 510 params->target_contents->controller().LoadURL( |
507 url, params->referrer, params->transition, extra_headers); | 511 url, params->referrer, params->transition, extra_headers, |
| 512 params->opener_browsing_instance_frame_id); |
508 } | 513 } |
509 } | 514 } |
510 } else { | 515 } else { |
511 // |target_contents| was specified non-NULL, and so we assume it has already | 516 // |target_contents| was specified non-NULL, and so we assume it has already |
512 // been navigated appropriately. We need to do nothing more other than | 517 // been navigated appropriately. We need to do nothing more other than |
513 // add it to the appropriate tabstrip. | 518 // add it to the appropriate tabstrip. |
514 } | 519 } |
515 | 520 |
516 // If the user navigated from the omnibox, and the selected tab is going to | 521 // If the user navigated from the omnibox, and the selected tab is going to |
517 // lose focus, then make sure the focus for the source tab goes away from the | 522 // lose focus, then make sure the focus for the source tab goes away from the |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
626 // chrome://settings. | 631 // chrome://settings. |
627 | 632 |
628 return !(url.scheme() == chrome::kChromeUIScheme && | 633 return !(url.scheme() == chrome::kChromeUIScheme && |
629 (url.host() == chrome::kChromeUISettingsHost || | 634 (url.host() == chrome::kChromeUISettingsHost || |
630 url.host() == chrome::kChromeUIExtensionsHost || | 635 url.host() == chrome::kChromeUIExtensionsHost || |
631 url.host() == chrome::kChromeUIBookmarksHost || | 636 url.host() == chrome::kChromeUIBookmarksHost || |
632 url.host() == chrome::kChromeUISyncPromoHost)); | 637 url.host() == chrome::kChromeUISyncPromoHost)); |
633 } | 638 } |
634 | 639 |
635 } // namespace browser | 640 } // namespace browser |
OLD | NEW |