diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-30 23:48:48 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-30 23:48:48 +0000 |
commit | 5c90fbf27d14048c35cf5b084c71aa7a114f77e5 (patch) | |
tree | e52c0fbbe59d29cbf918ef006f557307dd96482a /chrome/browser | |
parent | fcb7a34a7c030355e21186336a8cfa2ecfd1f378 (diff) | |
download | chromium_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.cc | 4 | ||||
-rw-r--r-- | chrome/browser/dom_ui/downloads_dom_handler.cc | 6 | ||||
-rw-r--r-- | chrome/browser/dom_ui/downloads_dom_handler.h | 3 |
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); }; |