summaryrefslogtreecommitdiffstats
path: root/chrome/browser/dom_ui
diff options
context:
space:
mode:
authorzelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-31 18:21:21 +0000
committerzelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-31 18:21:21 +0000
commit62db41b05fdeecd7eea95d7a5913345d674a40a8 (patch)
treeec6852c3e6c30947864d6167c2f6ef2db9d8ef2a /chrome/browser/dom_ui
parentbc1786c826d6a7cf1a4b06455782180977d965f6 (diff)
downloadchromium_src-62db41b05fdeecd7eea95d7a5913345d674a40a8.zip
chromium_src-62db41b05fdeecd7eea95d7a5913345d674a40a8.tar.gz
chromium_src-62db41b05fdeecd7eea95d7a5913345d674a40a8.tar.bz2
Fixed feedback form crash.
BUG=chromium-os:6169 TEST=make sure that chromeos feedback form can survive browser state restore without crashing Review URL: http://codereview.chromium.org/3280010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58031 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/dom_ui')
-rw-r--r--chrome/browser/dom_ui/bug_report_ui.cc34
1 files changed, 19 insertions, 15 deletions
diff --git a/chrome/browser/dom_ui/bug_report_ui.cc b/chrome/browser/dom_ui/bug_report_ui.cc
index d3b888b..021ff9e 100644
--- a/chrome/browser/dom_ui/bug_report_ui.cc
+++ b/chrome/browser/dom_ui/bug_report_ui.cc
@@ -226,9 +226,9 @@ class BugReportHandler : public DOMMessageHandler,
void ClobberScreenshotsSource();
private:
- Browser* browser_;
+ void CloseTab();
+
std::string page_url_;
- Profile* profile_;
TabContents* tab_;
TabContents* target_tab_;
DOMUIScreenshotSource* screenshot_source_;
@@ -375,8 +375,7 @@ void BugReportUIHTMLSource::StartDataRequest(const std::string& path,
//
////////////////////////////////////////////////////////////////////////////////
BugReportHandler::BugReportHandler(TabContents* tab)
- : profile_(NULL), tab_(tab), screenshot_source_(NULL) {
- browser_ = BrowserList::GetLastActive();
+ : tab_(tab), screenshot_source_(NULL) {
}
BugReportHandler::~BugReportHandler() {
@@ -435,17 +434,16 @@ base::StringPiece BugReportHandler::Init() {
IDR_BUGREPORT_HTML_INVALID));
}
+ Browser* browser = BrowserList::GetLastActive();
// Sanity checks.
- if (((index == 0) && (params != "0")) || (index >= browser_->tab_count())) {
+ if (((index == 0) && (params != "0")) || !browser ||
+ index >= browser->tab_count()) {
return base::StringPiece(
ResourceBundle::GetSharedInstance().GetRawDataResource(
IDR_BUGREPORT_HTML_INVALID));
}
- if (browser_)
- target_tab_ = browser_->GetTabContentsAt(index);
- else
- LOG(FATAL) << "Failed to get last active browser.";
+ target_tab_ = browser->GetTabContentsAt(index);
// Setup the screenshot source after we've verified input is legit.
SetupScreenshotsSource();
@@ -576,7 +574,7 @@ void BugReportHandler::HandleSendReport(const ListValue* list_value) {
image_data_size = image.size();
}
- BugReportUtil::SendReport(browser_->profile(),
+ BugReportUtil::SendReport(dom_ui_->GetProfile(),
UTF16ToUTF8(target_tab_->GetTitle()),
problem_type,
page_url,
@@ -592,16 +590,22 @@ void BugReportHandler::HandleSendReport(const ListValue* list_value) {
browser::screen_size.height());
#endif
- browser_->CloseTabContents(tab_);
- ClobberScreenshotsSource();
+ CloseTab();
}
void BugReportHandler::HandleCancel(const ListValue*) {
- browser_->CloseTabContents(tab_);
- ClobberScreenshotsSource();
+ CloseTab();
}
-
+void BugReportHandler::CloseTab() {
+ Browser* browser = BrowserList::GetLastActive();
+ if (browser) {
+ browser->CloseTabContents(tab_);
+ } else {
+ LOG(FATAL) << "Failed to get last active browser.";
+ }
+ ClobberScreenshotsSource();
+}
////////////////////////////////////////////////////////////////////////////////
//