| 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/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 #include "content/public/browser/notification_service.h" | 38 #include "content/public/browser/notification_service.h" |
| 39 #include "content/public/browser/render_view_host.h" | 39 #include "content/public/browser/render_view_host.h" |
| 40 #include "content/public/browser/web_contents.h" | 40 #include "content/public/browser/web_contents.h" |
| 41 #include "content/public/browser/web_contents_view.h" | 41 #include "content/public/browser/web_contents_view.h" |
| 42 | 42 |
| 43 #if defined(USE_AURA) | 43 #if defined(USE_AURA) |
| 44 #include "ui/aura/window.h" | 44 #include "ui/aura/window.h" |
| 45 #endif | 45 #endif |
| 46 | 46 |
| 47 using content::GlobalRequestID; | 47 using content::GlobalRequestID; |
| 48 using content::NavigationController; |
| 48 using content::WebContents; | 49 using content::WebContents; |
| 49 | 50 |
| 50 class BrowserNavigatorWebContentsAdoption { | 51 class BrowserNavigatorWebContentsAdoption { |
| 51 public: | 52 public: |
| 52 static void AttachTabHelpers(content::WebContents* contents) { | 53 static void AttachTabHelpers(content::WebContents* contents) { |
| 53 BrowserTabContents::AttachTabHelpers(contents); | 54 BrowserTabContents::AttachTabHelpers(contents); |
| 54 } | 55 } |
| 55 }; | 56 }; |
| 56 | 57 |
| 57 namespace { | 58 namespace { |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 return Profile::FromBrowserContext( | 237 return Profile::FromBrowserContext( |
| 237 params->source_contents->GetBrowserContext()); | 238 params->source_contents->GetBrowserContext()); |
| 238 } | 239 } |
| 239 | 240 |
| 240 return params->initiating_profile; | 241 return params->initiating_profile; |
| 241 } | 242 } |
| 242 | 243 |
| 243 void LoadURLInContents(WebContents* target_contents, | 244 void LoadURLInContents(WebContents* target_contents, |
| 244 const GURL& url, | 245 const GURL& url, |
| 245 chrome::NavigateParams* params) { | 246 chrome::NavigateParams* params) { |
| 246 content::NavigationController::LoadURLParams load_url_params(url); | 247 NavigationController::LoadURLParams load_url_params(url); |
| 247 load_url_params.referrer = params->referrer; | 248 load_url_params.referrer = params->referrer; |
| 248 load_url_params.transition_type = params->transition; | 249 load_url_params.transition_type = params->transition; |
| 249 load_url_params.extra_headers = params->extra_headers; | 250 load_url_params.extra_headers = params->extra_headers; |
| 250 load_url_params.should_replace_current_entry = | 251 load_url_params.should_replace_current_entry = |
| 251 params->should_replace_current_entry; | 252 params->should_replace_current_entry; |
| 252 | 253 |
| 253 if (params->transferred_global_request_id != GlobalRequestID()) { | 254 if (params->transferred_global_request_id != GlobalRequestID()) { |
| 254 load_url_params.is_renderer_initiated = params->is_renderer_initiated; | 255 load_url_params.is_renderer_initiated = params->is_renderer_initiated; |
| 255 load_url_params.transferred_global_request_id = | 256 load_url_params.transferred_global_request_id = |
| 256 params->transferred_global_request_id; | 257 params->transferred_global_request_id; |
| 257 } else if (params->is_renderer_initiated) { | 258 } else if (params->is_renderer_initiated) { |
| 258 load_url_params.is_renderer_initiated = true; | 259 load_url_params.is_renderer_initiated = true; |
| 259 } | 260 } |
| 261 |
| 262 // Only allows the browser-initiated navigation to use POST. |
| 263 if (params->uses_post && !params->is_renderer_initiated) { |
| 264 load_url_params.load_type = |
| 265 NavigationController::LOAD_TYPE_BROWSER_INITIATED_HTTP_POST; |
| 266 load_url_params.browser_initiated_post_data = |
| 267 params->browser_initiated_post_data; |
| 268 } |
| 260 target_contents->GetController().LoadURLWithParams(load_url_params); | 269 target_contents->GetController().LoadURLWithParams(load_url_params); |
| 261 } | 270 } |
| 262 | 271 |
| 263 // This class makes sure the Browser object held in |params| is made visible | 272 // This class makes sure the Browser object held in |params| is made visible |
| 264 // by the time it goes out of scope, provided |params| wants it to be shown. | 273 // by the time it goes out of scope, provided |params| wants it to be shown. |
| 265 class ScopedBrowserDisplayer { | 274 class ScopedBrowserDisplayer { |
| 266 public: | 275 public: |
| 267 explicit ScopedBrowserDisplayer(chrome::NavigateParams* params) | 276 explicit ScopedBrowserDisplayer(chrome::NavigateParams* params) |
| 268 : params_(params) { | 277 : params_(params) { |
| 269 } | 278 } |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 } | 384 } |
| 376 | 385 |
| 377 } // namespace | 386 } // namespace |
| 378 | 387 |
| 379 namespace chrome { | 388 namespace chrome { |
| 380 | 389 |
| 381 NavigateParams::NavigateParams(Browser* a_browser, | 390 NavigateParams::NavigateParams(Browser* a_browser, |
| 382 const GURL& a_url, | 391 const GURL& a_url, |
| 383 content::PageTransition a_transition) | 392 content::PageTransition a_transition) |
| 384 : url(a_url), | 393 : url(a_url), |
| 394 uses_post(false), |
| 385 target_contents(NULL), | 395 target_contents(NULL), |
| 386 source_contents(NULL), | 396 source_contents(NULL), |
| 387 disposition(CURRENT_TAB), | 397 disposition(CURRENT_TAB), |
| 388 transition(a_transition), | 398 transition(a_transition), |
| 389 is_renderer_initiated(false), | 399 is_renderer_initiated(false), |
| 390 tabstrip_index(-1), | 400 tabstrip_index(-1), |
| 391 tabstrip_add_types(TabStripModel::ADD_ACTIVE), | 401 tabstrip_add_types(TabStripModel::ADD_ACTIVE), |
| 392 window_action(NO_ACTION), | 402 window_action(NO_ACTION), |
| 393 user_gesture(true), | 403 user_gesture(true), |
| 394 path_behavior(RESPECT), | 404 path_behavior(RESPECT), |
| 395 ref_behavior(IGNORE_REF), | 405 ref_behavior(IGNORE_REF), |
| 396 browser(a_browser), | 406 browser(a_browser), |
| 397 initiating_profile(NULL), | 407 initiating_profile(NULL), |
| 398 host_desktop_type(GetHostDesktop(a_browser)), | 408 host_desktop_type(GetHostDesktop(a_browser)), |
| 399 should_replace_current_entry(false), | 409 should_replace_current_entry(false), |
| 400 should_set_opener(false) { | 410 should_set_opener(false) { |
| 401 } | 411 } |
| 402 | 412 |
| 403 NavigateParams::NavigateParams(Browser* a_browser, | 413 NavigateParams::NavigateParams(Browser* a_browser, |
| 404 WebContents* a_target_contents) | 414 WebContents* a_target_contents) |
| 405 : target_contents(a_target_contents), | 415 : uses_post(false), |
| 416 target_contents(a_target_contents), |
| 406 source_contents(NULL), | 417 source_contents(NULL), |
| 407 disposition(CURRENT_TAB), | 418 disposition(CURRENT_TAB), |
| 408 transition(content::PAGE_TRANSITION_LINK), | 419 transition(content::PAGE_TRANSITION_LINK), |
| 409 is_renderer_initiated(false), | 420 is_renderer_initiated(false), |
| 410 tabstrip_index(-1), | 421 tabstrip_index(-1), |
| 411 tabstrip_add_types(TabStripModel::ADD_ACTIVE), | 422 tabstrip_add_types(TabStripModel::ADD_ACTIVE), |
| 412 window_action(NO_ACTION), | 423 window_action(NO_ACTION), |
| 413 user_gesture(true), | 424 user_gesture(true), |
| 414 path_behavior(RESPECT), | 425 path_behavior(RESPECT), |
| 415 ref_behavior(IGNORE_REF), | 426 ref_behavior(IGNORE_REF), |
| 416 browser(a_browser), | 427 browser(a_browser), |
| 417 initiating_profile(NULL), | 428 initiating_profile(NULL), |
| 418 host_desktop_type(GetHostDesktop(a_browser)), | 429 host_desktop_type(GetHostDesktop(a_browser)), |
| 419 should_replace_current_entry(false), | 430 should_replace_current_entry(false), |
| 420 should_set_opener(false) { | 431 should_set_opener(false) { |
| 421 } | 432 } |
| 422 | 433 |
| 423 NavigateParams::NavigateParams(Profile* a_profile, | 434 NavigateParams::NavigateParams(Profile* a_profile, |
| 424 const GURL& a_url, | 435 const GURL& a_url, |
| 425 content::PageTransition a_transition) | 436 content::PageTransition a_transition) |
| 426 : url(a_url), | 437 : url(a_url), |
| 438 uses_post(false), |
| 427 target_contents(NULL), | 439 target_contents(NULL), |
| 428 source_contents(NULL), | 440 source_contents(NULL), |
| 429 disposition(NEW_FOREGROUND_TAB), | 441 disposition(NEW_FOREGROUND_TAB), |
| 430 transition(a_transition), | 442 transition(a_transition), |
| 431 is_renderer_initiated(false), | 443 is_renderer_initiated(false), |
| 432 tabstrip_index(-1), | 444 tabstrip_index(-1), |
| 433 tabstrip_add_types(TabStripModel::ADD_ACTIVE), | 445 tabstrip_add_types(TabStripModel::ADD_ACTIVE), |
| 434 window_action(SHOW_WINDOW), | 446 window_action(SHOW_WINDOW), |
| 435 user_gesture(true), | 447 user_gesture(true), |
| 436 path_behavior(RESPECT), | 448 path_behavior(RESPECT), |
| (...skipping 11 matching lines...) Expand all Loading... |
| 448 const content::OpenURLParams& params) { | 460 const content::OpenURLParams& params) { |
| 449 nav_params->referrer = params.referrer; | 461 nav_params->referrer = params.referrer; |
| 450 nav_params->extra_headers = params.extra_headers; | 462 nav_params->extra_headers = params.extra_headers; |
| 451 nav_params->disposition = params.disposition; | 463 nav_params->disposition = params.disposition; |
| 452 nav_params->override_encoding = params.override_encoding; | 464 nav_params->override_encoding = params.override_encoding; |
| 453 nav_params->is_renderer_initiated = params.is_renderer_initiated; | 465 nav_params->is_renderer_initiated = params.is_renderer_initiated; |
| 454 nav_params->transferred_global_request_id = | 466 nav_params->transferred_global_request_id = |
| 455 params.transferred_global_request_id; | 467 params.transferred_global_request_id; |
| 456 nav_params->should_replace_current_entry = | 468 nav_params->should_replace_current_entry = |
| 457 params.should_replace_current_entry; | 469 params.should_replace_current_entry; |
| 470 nav_params->uses_post = params.uses_post; |
| 471 nav_params->browser_initiated_post_data = params.browser_initiated_post_data; |
| 458 } | 472 } |
| 459 | 473 |
| 460 void Navigate(NavigateParams* params) { | 474 void Navigate(NavigateParams* params) { |
| 461 Browser* source_browser = params->browser; | 475 Browser* source_browser = params->browser; |
| 462 if (source_browser) | 476 if (source_browser) |
| 463 params->initiating_profile = source_browser->profile(); | 477 params->initiating_profile = source_browser->profile(); |
| 464 DCHECK(params->initiating_profile); | 478 DCHECK(params->initiating_profile); |
| 465 | 479 |
| 466 if (!AdjustNavigateParamsForURL(params)) | 480 if (!AdjustNavigateParamsForURL(params)) |
| 467 return; | 481 return; |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 bool reverse_on_redirect = false; | 690 bool reverse_on_redirect = false; |
| 677 content::BrowserURLHandler::GetInstance()->RewriteURLIfNecessary( | 691 content::BrowserURLHandler::GetInstance()->RewriteURLIfNecessary( |
| 678 &rewritten_url, browser_context, &reverse_on_redirect); | 692 &rewritten_url, browser_context, &reverse_on_redirect); |
| 679 | 693 |
| 680 // Some URLs are mapped to uber subpages. Do not allow them in incognito. | 694 // Some URLs are mapped to uber subpages. Do not allow them in incognito. |
| 681 return !(rewritten_url.scheme() == chrome::kChromeUIScheme && | 695 return !(rewritten_url.scheme() == chrome::kChromeUIScheme && |
| 682 rewritten_url.host() == chrome::kChromeUIUberHost); | 696 rewritten_url.host() == chrome::kChromeUIUberHost); |
| 683 } | 697 } |
| 684 | 698 |
| 685 } // namespace chrome | 699 } // namespace chrome |
| OLD | NEW |