summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-15 23:33:08 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-15 23:33:08 +0000
commiteca25813c3bd229f1a7923219d94d53bf71ac0bd (patch)
treea4753edfa57b572604f2abd0bdca45166d9678d7
parent98546a1e47d36c0fc96d45c45eb9e95e7d24273e (diff)
downloadchromium_src-eca25813c3bd229f1a7923219d94d53bf71ac0bd.zip
chromium_src-eca25813c3bd229f1a7923219d94d53bf71ac0bd.tar.gz
chromium_src-eca25813c3bd229f1a7923219d94d53bf71ac0bd.tar.bz2
Don't show tabbed options page or bookmarks manager in OTR browser window.
Instead, always show it in a normal window (creating one if necessary). The change is made in BrowserNavigator because that is the control flow bottleneck. BUG=61813 TEST=manual Review URL: http://codereview.chromium.org/4655002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66189 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/dom_ui/options/options_ui.cc2
-rw-r--r--chrome/browser/gtk/tabs/tab_strip_gtk.cc37
-rw-r--r--chrome/browser/ui/browser.cc1
-rw-r--r--chrome/browser/ui/browser_navigator.cc25
4 files changed, 42 insertions, 23 deletions
diff --git a/chrome/browser/dom_ui/options/options_ui.cc b/chrome/browser/dom_ui/options/options_ui.cc
index 0ee7188..009c0e1 100644
--- a/chrome/browser/dom_ui/options/options_ui.cc
+++ b/chrome/browser/dom_ui/options/options_ui.cc
@@ -240,6 +240,8 @@ RefCountedMemory* OptionsUI::GetFaviconResourceBytes() {
}
void OptionsUI::InitializeHandlers() {
+ DCHECK(!GetProfile()->IsOffTheRecord());
+
std::vector<DOMMessageHandler*>::iterator iter;
for (iter = handlers_.begin(); iter != handlers_.end(); ++iter) {
(static_cast<OptionsPageUIHandler*>(*iter))->Initialize();
diff --git a/chrome/browser/gtk/tabs/tab_strip_gtk.cc b/chrome/browser/gtk/tabs/tab_strip_gtk.cc
index 0547815..5b0996c 100644
--- a/chrome/browser/gtk/tabs/tab_strip_gtk.cc
+++ b/chrome/browser/gtk/tabs/tab_strip_gtk.cc
@@ -12,6 +12,7 @@
#include "base/i18n/rtl.h"
#include "base/string_util.h"
#include "chrome/browser/autocomplete/autocomplete.h"
+#include "chrome/browser/browser.h"
#include "chrome/browser/gtk/browser_window_gtk.h"
#include "chrome/browser/gtk/custom_button.h"
#include "chrome/browser/gtk/gtk_theme_provider.h"
@@ -21,6 +22,7 @@
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/tabs/tab_strip_model_delegate.h"
#include "chrome/browser/themes/browser_theme_provider.h"
+#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/common/notification_service.h"
#include "chrome/common/notification_type.h"
#include "gfx/gtk_util.h"
@@ -1612,20 +1614,19 @@ bool TabStripGtk::CompleteDrop(guchar* data) {
if (!url.is_valid())
return false;
+ browser::NavigateParams params(window()->browser(), url,
+ PageTransition::LINK);
+ params.tabstrip_index = drop_index;
+
if (drop_before) {
- // Insert a new tab.
- TabContents* contents =
- model_->delegate()->CreateTabContentsForURL(
- url, GURL(), model_->profile(), PageTransition::TYPED, false,
- NULL);
- model_->AddTabContents(contents, drop_index, PageTransition::GENERATED,
- TabStripModel::ADD_SELECTED);
+ params.disposition = NEW_FOREGROUND_TAB;
} else {
- model_->GetTabContentsAt(drop_index)->controller().LoadURL(
- url, GURL(), PageTransition::GENERATED);
- model_->SelectTabContentsAt(drop_index, true);
+ params.disposition = CURRENT_TAB;
+ params.source_contents = model_->GetTabContentsAt(drop_index);
}
+ browser::Navigate(&params);
+
return true;
}
@@ -1974,19 +1975,9 @@ void TabStripGtk::OnNewTabClicked(GtkWidget* widget) {
if (!gtk_util::URLFromPrimarySelection(model_->profile(), &url))
return;
- TabContents* contents =
- model_->delegate()->CreateTabContentsForURL(
- url,
- GURL(), // referrer
- model_->profile(),
- PageTransition::TYPED,
- false, // defer_load
- NULL); // instance
- model_->AddTabContents(
- contents,
- -1, // index
- PageTransition::TYPED,
- TabStripModel::ADD_SELECTED);
+ Browser* browser = window_->browser();
+ DCHECK(browser);
+ browser->AddSelectedTabWithURL(url, PageTransition::TYPED);
break;
}
default:
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index 5f31db8..1089e42 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -672,6 +672,7 @@ void Browser::OpenHelpWindow(Profile* profile) {
browser->window()->Show();
}
+// static
void Browser::OpenOptionsWindow(Profile* profile) {
Browser* browser = Browser::Create(profile);
browser->ShowOptionsTab(chrome::kDefaultOptionsSubPage);
diff --git a/chrome/browser/ui/browser_navigator.cc b/chrome/browser/ui/browser_navigator.cc
index f7bd483..89f4278 100644
--- a/chrome/browser/ui/browser_navigator.cc
+++ b/chrome/browser/ui/browser_navigator.cc
@@ -16,6 +16,7 @@
#include "chrome/browser/tabs/tab_strip_model.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/common/chrome_switches.h"
+#include "chrome/common/url_constants.h"
namespace {
@@ -94,6 +95,28 @@ int GetIndexOfSingletonTab(browser::NavigateParams* params) {
return -1;
}
+// Change some of the navigation parameters based on the particular URL.
+// Currently this applies to chrome://settings and the bookmark manager,
+// which we always want to open in a normal (not incognito) window.
+void AdjustNavigateParamsForURL(browser::NavigateParams* params) {
+ if (!params->target_contents &&
+ params->url.scheme() == chrome::kChromeUIScheme &&
+ (params->url.host() == chrome::kChromeUISettingsHost ||
+ params->url.host() == chrome::kChromeUIBookmarksHost)) {
+ Profile* profile =
+ params->browser ? params->browser->profile() : params->profile;
+
+ if (profile->IsOffTheRecord()) {
+ profile = profile->GetOriginalProfile();
+
+ params->disposition = SINGLETON_TAB;
+ params->profile = profile;
+ params->browser = Browser::GetOrCreateTabbedBrowser(profile);
+ params->show_window = true;
+ }
+ }
+}
+
// Returns a Browser that can host the navigation or tab addition specified in
// |params|. This might just return the same Browser specified in |params|, or
// some other if that Browser is deemed incompatible.
@@ -281,6 +304,8 @@ NavigateParams::~NavigateParams() {
}
void Navigate(NavigateParams* params) {
+ AdjustNavigateParamsForURL(params);
+
params->browser = GetBrowserForDisposition(params);
if (!params->browser)
return;