Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(101)

Unified Diff: chrome/browser/ui/views/select_file_dialog_extension_browsertest.cc

Issue 902493002: Fix flakiness of SelectFileDialogExtensionBrowserTest.SelectFileAndCancel. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/select_file_dialog_extension_browsertest.cc
diff --git a/chrome/browser/ui/views/select_file_dialog_extension_browsertest.cc b/chrome/browser/ui/views/select_file_dialog_extension_browsertest.cc
index ca1bec93ad6a90feddebea2eb47e739a6b47b491..166e7f2af1dfad74b5c36a302189c35f98db4115 100644
--- a/chrome/browser/ui/views/select_file_dialog_extension_browsertest.cc
+++ b/chrome/browser/ui/views/select_file_dialog_extension_browsertest.cc
@@ -22,8 +22,6 @@
#include "chrome/browser/ui/browser_window.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/pref_names.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_types.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/test/test_utils.h"
@@ -54,6 +52,7 @@ class MockSelectFileDialogListener : public ui::SelectFileDialog::Listener {
file_selected_ = true;
path_ = path;
params_ = params;
+ QuitMessageLoop();
}
void FileSelectedWithExtraInfo(const ui::SelectedFileInfo& selected_file_info,
int index,
@@ -61,17 +60,31 @@ class MockSelectFileDialogListener : public ui::SelectFileDialog::Listener {
FileSelected(selected_file_info.local_path, index, params);
}
void MultiFilesSelected(const std::vector<base::FilePath>& files,
- void* params) override {}
+ void* params) override {
+ QuitMessageLoop();
+ }
void FileSelectionCanceled(void* params) override {
canceled_ = true;
params_ = params;
+ QuitMessageLoop();
+ }
+
+ void WaitForCalled() {
+ message_loop_runner_ = new content::MessageLoopRunner();
+ message_loop_runner_->Run();
}
private:
+ void QuitMessageLoop() {
+ if (message_loop_runner_)
Lei Zhang 2015/02/04 05:32:49 Can you do "message_loop_runner_.get()" for http:/
hirono 2015/02/04 05:43:24 Done.
+ message_loop_runner_->Quit();
+ }
+
bool file_selected_;
bool canceled_;
base::FilePath path_;
void* params_;
+ scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
DISALLOW_COPY_AND_ASSIGN(MockSelectFileDialogListener);
};
@@ -190,9 +203,6 @@ class SelectFileDialogExtensionBrowserTest : public ExtensionBrowserTest {
const gfx::NativeWindow& owning_window) {
// Inject JavaScript to click the cancel button and wait for notification
// that the window has closed.
- content::WindowedNotificationObserver host_destroyed(
- content::NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED,
- content::NotificationService::AllSources());
content::RenderViewHost* host = dialog_->GetRenderViewHost();
std::string button_class =
(button_type == DIALOG_BTN_OK) ? ".button-panel .ok" :
@@ -204,7 +214,7 @@ class SelectFileDialogExtensionBrowserTest : public ExtensionBrowserTest {
// to JavaScript, so do not wait for return values.
host->GetMainFrame()->ExecuteJavaScript(script);
LOG(INFO) << "Waiting for window close notification.";
- host_destroyed.Wait();
+ listener_->WaitForCalled();
// Dialog no longer believes it is running.
ASSERT_FALSE(dialog_->IsRunning(owning_window));
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698