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

Unified Diff: chrome/browser/ui/browser_navigator.cc

Issue 10825317: Convert banned calls to use Navigate in ash app list. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/browser_navigator.h ('k') | chrome/browser/ui/browser_navigator_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/browser_navigator.cc
diff --git a/chrome/browser/ui/browser_navigator.cc b/chrome/browser/ui/browser_navigator.cc
index ea1a31edfad7b18c5b10af934e16604c0c9e4664..0b41fdaf58a7332a090f3a77a2b9490bf0a1d23b 100644
--- a/chrome/browser/ui/browser_navigator.cc
+++ b/chrome/browser/ui/browser_navigator.cc
@@ -74,7 +74,7 @@ bool AdjustNavigateParamsForURL(chrome::NavigateParams* params) {
return true;
}
- Profile* profile = params->browser->profile();
+ Profile* profile = params->initiating_profile;
if (profile->IsOffTheRecord() || params->disposition == OFF_THE_RECORD) {
profile = profile->GetOriginalProfile();
@@ -102,19 +102,23 @@ Browser* GetBrowserForDisposition(chrome::NavigateParams* params) {
// the target browser. This must happen first, before
// GetBrowserForDisposition() has a chance to replace |params->browser| with
// another one.
- if (!params->source_contents)
+ if (!params->source_contents && params->browser)
params->source_contents = chrome::GetActiveTabContents(params->browser);
- Profile* profile = params->browser->profile();
+ Profile* profile = params->initiating_profile;
switch (params->disposition) {
case CURRENT_TAB:
- return params->browser;
+ if (params->browser)
+ return params->browser;
+ // Find a compatible window and re-execute this command in it. Otherwise
+ // re-run with NEW_WINDOW.
+ return GetOrCreateBrowser(profile);
case SINGLETON_TAB:
case NEW_FOREGROUND_TAB:
case NEW_BACKGROUND_TAB:
// See if we can open the tab in the window this navigator is bound to.
- if (WindowCanOpenTabs(params->browser))
+ if (params->browser && WindowCanOpenTabs(params->browser))
return params->browser;
// Find a compatible window and re-execute this command in it. Otherwise
// re-run with NEW_WINDOW.
@@ -204,14 +208,11 @@ void NormalizeDisposition(chrome::NavigateParams* params) {
}
// Obtain the profile used by the code that originated the Navigate() request.
-// |source_browser| represents the Browser that was supplied in |params| before
-// it was modified.
-Profile* GetSourceProfile(chrome::NavigateParams* params,
- Browser* source_browser) {
+Profile* GetSourceProfile(chrome::NavigateParams* params) {
if (params->source_contents)
return params->source_contents->profile();
- return source_browser->profile();
+ return params->initiating_profile;
}
void LoadURLInContents(WebContents* target_contents,
@@ -344,8 +345,8 @@ NavigateParams::NavigateParams(Browser* a_browser,
user_gesture(true),
path_behavior(RESPECT),
ref_behavior(IGNORE_REF),
- browser(a_browser) {
-}
+ browser(a_browser),
+ initiating_profile(NULL) {}
NavigateParams::NavigateParams(Browser* a_browser,
TabContents* a_target_contents)
@@ -360,20 +361,42 @@ NavigateParams::NavigateParams(Browser* a_browser,
user_gesture(true),
path_behavior(RESPECT),
ref_behavior(IGNORE_REF),
- browser(a_browser) {
-}
+ browser(a_browser),
+ initiating_profile(NULL) {}
-NavigateParams::~NavigateParams() {
-}
+NavigateParams::NavigateParams(Profile* a_profile,
+ const GURL& a_url,
+ content::PageTransition a_transition)
+ : url(a_url),
+ target_contents(NULL),
+ source_contents(NULL),
+ disposition(NEW_FOREGROUND_TAB),
+ transition(a_transition),
+ is_renderer_initiated(false),
+ tabstrip_index(-1),
+ tabstrip_add_types(TabStripModel::ADD_ACTIVE),
+ window_action(SHOW_WINDOW),
+ user_gesture(true),
+ path_behavior(RESPECT),
+ ref_behavior(IGNORE_REF),
+ browser(NULL),
+ initiating_profile(a_profile) {}
+
+NavigateParams::~NavigateParams() {}
void Navigate(NavigateParams* params) {
Browser* source_browser = params->browser;
+ if (source_browser)
+ params->initiating_profile = source_browser->profile();
+ DCHECK(params->initiating_profile);
if (!AdjustNavigateParamsForURL(params))
return;
// The browser window may want to adjust the disposition.
- if (params->disposition == NEW_POPUP && source_browser->window()) {
+ if (params->disposition == NEW_POPUP &&
+ source_browser &&
+ source_browser->window()) {
params->disposition =
source_browser->window()->GetDispositionForPopupBounds(
params->window_bounds);
@@ -384,6 +407,7 @@ void Navigate(NavigateParams* params) {
if (params->source_contents &&
params->source_contents->web_contents()->IsCrashed() &&
params->disposition == CURRENT_TAB &&
+ params->browser &&
params->browser->is_type_panel()) {
params->disposition = NEW_FOREGROUND_TAB;
}
@@ -395,7 +419,7 @@ void Navigate(NavigateParams* params) {
// Navigate() must not return early after this point.
- if (GetSourceProfile(params, source_browser) != params->browser->profile()) {
+ if (GetSourceProfile(params) != params->browser->profile()) {
// A tab is being opened from a link from a different profile, we must reset
// source information that may cause state to be shared.
params->source_contents = NULL;
« no previous file with comments | « chrome/browser/ui/browser_navigator.h ('k') | chrome/browser/ui/browser_navigator_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698