summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views
diff options
context:
space:
mode:
authorcpu@google.com <cpu@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-17 23:05:41 +0000
committercpu@google.com <cpu@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-17 23:05:41 +0000
commitcb000cef90e568bd5192a230e7794113169b70a2 (patch)
tree28b5c0874e65368f501eae684ecab19d8752e6b8 /chrome/browser/views
parent43f2be0f6498026903681a3bdf27e90282b5cc52 (diff)
downloadchromium_src-cb000cef90e568bd5192a230e7794113169b70a2.zip
chromium_src-cb000cef90e568bd5192a230e7794113169b70a2.tar.gz
chromium_src-cb000cef90e568bd5192a230e7794113169b70a2.tar.bz2
Fix crasher in GetDefaultSearchEngineName() in first run bubble.
- It seems that BrowserList::GetLastActive() is returning null, probably it takes longer now for the browser to become active. - But rather than guessing the profile, get it from the guts of the location bar. - crasher is ranked #34 by Laforge BUG=6211 Review URL: http://codereview.chromium.org/20381 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9916 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views')
-rw-r--r--chrome/browser/views/first_run_bubble.cc23
-rw-r--r--chrome/browser/views/first_run_bubble.h4
-rw-r--r--chrome/browser/views/location_bar_view.cc2
3 files changed, 17 insertions, 12 deletions
diff --git a/chrome/browser/views/first_run_bubble.cc b/chrome/browser/views/first_run_bubble.cc
index ad97219..8b6dc06 100644
--- a/chrome/browser/views/first_run_bubble.cc
+++ b/chrome/browser/views/first_run_bubble.cc
@@ -29,11 +29,13 @@ namespace {
// infobubble provides.
static const int kBubblePadding = 4;
-std::wstring GetDefaultSearchEngineName() {
- Browser* browser = BrowserList::GetLastActive();
- DCHECK(browser);
+std::wstring GetDefaultSearchEngineName(Profile* profile) {
+ if (!profile) {
+ NOTREACHED();
+ return std::wstring();
+ }
const TemplateURL* const default_provider =
- browser->profile()->GetTemplateURLModel()->GetDefaultSearchProvider();
+ profile->GetTemplateURLModel()->GetDefaultSearchProvider();
if (!default_provider) {
// TODO(cpu): bug 1187517. It is possible to have no default provider.
// returning an empty string is a stopgap measure for the crash
@@ -50,7 +52,7 @@ std::wstring GetDefaultSearchEngineName() {
class FirstRunBubbleView : public views::View,
public views::NativeButton::Listener {
public:
- explicit FirstRunBubbleView(FirstRunBubble* bubble_window)
+ FirstRunBubbleView(FirstRunBubble* bubble_window, Profile* profile)
: bubble_window_(bubble_window),
label1_(NULL),
label2_(NULL),
@@ -76,7 +78,7 @@ class FirstRunBubbleView : public views::View,
std::wstring question_str
= l10n_util::GetStringF(IDS_FR_BUBBLE_QUESTION,
- GetDefaultSearchEngineName());
+ GetDefaultSearchEngineName(profile));
label3_ = new views::Label(question_str);
label3_->SetMultiLine(true);
label3_->SetFont(font);
@@ -84,8 +86,9 @@ class FirstRunBubbleView : public views::View,
label3_->SizeToFit(ps.width() - kBubblePadding * 2);
AddChildView(label3_);
- std::wstring keep_str = l10n_util::GetStringF(IDS_FR_BUBBLE_OK,
- GetDefaultSearchEngineName());
+ std::wstring keep_str =
+ l10n_util::GetStringF(IDS_FR_BUBBLE_OK,
+ GetDefaultSearchEngineName(profile));
keep_button_ = new views::NativeButton(keep_str, true);
keep_button_->SetListener(this);
AddChildView(keep_button_);
@@ -203,10 +206,10 @@ void FirstRunBubble::InfoBubbleClosing(InfoBubble* info_bubble,
enable_window_method_factory_.RevokeAll();
}
-FirstRunBubble* FirstRunBubble::Show(HWND parent_hwnd,
+FirstRunBubble* FirstRunBubble::Show(Profile* profile, HWND parent_hwnd,
const gfx::Rect& position_relative_to) {
FirstRunBubble* window = new FirstRunBubble();
- views::View* view = new FirstRunBubbleView(window);
+ views::View* view = new FirstRunBubbleView(window, profile);
window->SetDelegate(window);
window->Init(parent_hwnd, position_relative_to, view);
window->ShowWindow(SW_SHOW);
diff --git a/chrome/browser/views/first_run_bubble.h b/chrome/browser/views/first_run_bubble.h
index 90cbf51..6dd1afc 100644
--- a/chrome/browser/views/first_run_bubble.h
+++ b/chrome/browser/views/first_run_bubble.h
@@ -8,10 +8,12 @@
#include "base/task.h"
#include "chrome/browser/views/info_bubble.h"
+class Profile;
+
class FirstRunBubble : public InfoBubble,
public InfoBubbleDelegate {
public:
- static FirstRunBubble* Show(HWND parent_hwnd,
+ static FirstRunBubble* Show(Profile* profile, HWND parent_hwnd,
const gfx::Rect& position_relative_to);
FirstRunBubble()
diff --git a/chrome/browser/views/location_bar_view.cc b/chrome/browser/views/location_bar_view.cc
index f5abaa0..396883c 100644
--- a/chrome/browser/views/location_bar_view.cc
+++ b/chrome/browser/views/location_bar_view.cc
@@ -835,7 +835,7 @@ void LocationBarView::ShowFirstRunBubbleInternal() {
if (UILayoutIsRightToLeft())
bounds.set_x(location.x() - 20);
- FirstRunBubble::Show(
+ FirstRunBubble::Show(profile_,
location_entry_view_->GetRootView()->GetWidget()->GetHWND(),
bounds);
}