summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-30 23:48:48 +0000
committerphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-30 23:48:48 +0000
commit5c90fbf27d14048c35cf5b084c71aa7a114f77e5 (patch)
treee52c0fbbe59d29cbf918ef006f557307dd96482a /chrome/browser
parentfcb7a34a7c030355e21186336a8cfa2ecfd1f378 (diff)
downloadchromium_src-5c90fbf27d14048c35cf5b084c71aa7a114f77e5.zip
chromium_src-5c90fbf27d14048c35cf5b084c71aa7a114f77e5.tar.gz
chromium_src-5c90fbf27d14048c35cf5b084c71aa7a114f77e5.tar.bz2
Fix BrowserFocusTest crashes caused by a callback being invoked for an invalid pointer.
This depends on http://codereview.chromium.org/2878062/show TEST=interactive_ui_tests:BrowserFocusTest.* BUG=50696, 48913 Review URL: http://codereview.chromium.org/3047030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54412 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/browser_focus_uitest.cc4
-rw-r--r--chrome/browser/dom_ui/downloads_dom_handler.cc6
-rw-r--r--chrome/browser/dom_ui/downloads_dom_handler.h3
3 files changed, 7 insertions, 6 deletions
diff --git a/chrome/browser/browser_focus_uitest.cc b/chrome/browser/browser_focus_uitest.cc
index e60d3a6..b115d13 100644
--- a/chrome/browser/browser_focus_uitest.cc
+++ b/chrome/browser/browser_focus_uitest.cc
@@ -754,12 +754,10 @@ IN_PROC_BROWSER_TEST_F(BrowserFocusTest, FLAKY_TabInitialFocus) {
// Open the new tab, focus should be on the location bar.
browser()->NewTab();
- ui_test_utils::RunAllPendingInMessageLoop();
ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
// Open the download tab, focus should be on the tab contents.
browser()->ShowDownloadsTab();
- ui_test_utils::RunAllPendingInMessageLoop();
ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
// Open about:blank, focus should be on the location bar.
@@ -793,7 +791,6 @@ IN_PROC_BROWSER_TEST_F(BrowserFocusTest, FocusOnReload) {
// Focus should now be on the tab contents.
browser()->ShowDownloadsTab();
- ui_test_utils::RunAllPendingInMessageLoop();
ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
}
@@ -819,7 +816,6 @@ IN_PROC_BROWSER_TEST_F(BrowserFocusTest, MAYBE_FocusOnReloadCrashedTab) {
// Focus should now be on the tab contents.
browser()->ShowDownloadsTab();
- ui_test_utils::RunAllPendingInMessageLoop();
ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
}
diff --git a/chrome/browser/dom_ui/downloads_dom_handler.cc b/chrome/browser/dom_ui/downloads_dom_handler.cc
index c1ba9d2..004b6a3 100644
--- a/chrome/browser/dom_ui/downloads_dom_handler.cc
+++ b/chrome/browser/dom_ui/downloads_dom_handler.cc
@@ -46,7 +46,8 @@ class DownloadItemSorter : public std::binary_function<DownloadItem*,
DownloadsDOMHandler::DownloadsDOMHandler(DownloadManager* dlm)
: search_text_(),
- download_manager_(dlm) {
+ download_manager_(dlm),
+ callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
// Create our fileicon data source.
ChromeThread::PostTask(
ChromeThread::IO, FROM_HERE,
@@ -117,7 +118,8 @@ void DownloadsDOMHandler::ModelChanged() {
ClearDownloadItems();
download_manager_->download_history()->Search(
WideToUTF16(search_text_),
- NewCallback(this, &DownloadsDOMHandler::OnSearchDownloadsComplete));
+ callback_factory_.NewCallback(
+ &DownloadsDOMHandler::OnSearchDownloadsComplete));
}
void DownloadsDOMHandler::OnSearchDownloadsComplete(
diff --git a/chrome/browser/dom_ui/downloads_dom_handler.h b/chrome/browser/dom_ui/downloads_dom_handler.h
index 06b48d6..3427a5a 100644
--- a/chrome/browser/dom_ui/downloads_dom_handler.h
+++ b/chrome/browser/dom_ui/downloads_dom_handler.h
@@ -8,6 +8,7 @@
#include <vector>
+#include "base/scoped_callback_factory.h"
#include "chrome/browser/dom_ui/dom_ui.h"
#include "chrome/browser/download/download_item.h"
#include "chrome/browser/download/download_manager.h"
@@ -96,6 +97,8 @@ class DownloadsDOMHandler : public DOMMessageHandler,
typedef std::vector<DownloadItem*> OrderedDownloads;
OrderedDownloads download_items_;
+ base::ScopedCallbackFactory<DownloadsDOMHandler> callback_factory_;
+
DISALLOW_COPY_AND_ASSIGN(DownloadsDOMHandler);
};