Commit 5e803e36 authored by Lei Zhang's avatar Lei Zhang Committed by Commit Bot

Stop polling in PDFExtensionClipboardTest.

Now that https://crbug.com/755826 has been fixed, tests that read from
the clipboard can use ClipboardMonitor to get notifications for when the
clipboard changes, instead of polling the clipboard. This is more
straight-forward, and hopefully more reliable.

Bug: 1121446
Change-Id: I53291e0957ee2bad8a565bb0d80ef0628be40e2c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2376765Reviewed-by: default avatarStuart Langley <slangley@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#802025}
parent 4241ec29
......@@ -97,6 +97,8 @@
#include "ui/accessibility/ax_tree.h"
#include "ui/accessibility/platform/ax_platform_node_delegate_base.h"
#include "ui/base/clipboard/clipboard.h"
#include "ui/base/clipboard/clipboard_monitor.h"
#include "ui/base/clipboard/clipboard_observer.h"
#include "ui/base/clipboard/test/test_clipboard.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/geometry/point.h"
......@@ -1896,21 +1898,29 @@ IN_PROC_BROWSER_TEST_F(PDFExtensionInternalLinkClickTest, ShiftLeft) {
EXPECT_EQ("page=2&zoom=100,0,200", url.ref());
}
class PDFExtensionClipboardTest : public PDFExtensionTest {
class PDFExtensionClipboardTest : public PDFExtensionTest,
public ui::ClipboardObserver {
public:
PDFExtensionClipboardTest() : guest_contents_(nullptr) {}
~PDFExtensionClipboardTest() override {}
// PDFExtensionTest:
void SetUpOnMainThread() override {
PDFExtensionTest::SetUpOnMainThread();
ui::TestClipboard::CreateForCurrentThread();
}
void TearDownOnMainThread() override {
ui::Clipboard::DestroyClipboardForCurrentThread();
PDFExtensionTest::TearDownOnMainThread();
}
// ui::ClipboardObserver:
void OnClipboardDataChanged() override {
DCHECK(!clipboard_changed_);
clipboard_changed_ = true;
std::move(clipboard_quit_closure_).Run();
}
void LoadTestComboBoxPdfGetGuestContents() {
GURL test_pdf_url(embedded_test_server()->GetURL("/pdf/combobox_form.pdf"));
guest_contents_ = LoadPdfGetGuestContents(test_pdf_url);
......@@ -2007,45 +2017,30 @@ class PDFExtensionClipboardTest : public PDFExtensionTest {
}
private:
// Waits and polls the clipboard of a given |clipboard_buffer| until its
// contents reaches the length of |expected|. Then checks and see if the
// clipboard contents matches |expected|.
// TODO(thestig): Change this to avoid polling after https://crbug.com/755826
// has been fixed.
void CheckClipboard(ui::ClipboardBuffer clipboard_buffer,
const std::string& expected) {
auto* clipboard = ui::Clipboard::GetForCurrentThread();
std::string clipboard_data;
const std::string& last_data = last_clipboard_data_[clipboard_buffer];
if (last_data.size() == expected.size()) {
DCHECK_EQ(last_data, expected);
clipboard->ReadAsciiText(clipboard_buffer, /* data_dst = */ nullptr,
&clipboard_data);
EXPECT_EQ(expected, clipboard_data);
return;
}
ui::ClipboardMonitor::GetInstance()->AddObserver(this);
DCHECK(!clipboard_changed_);
DCHECK(!clipboard_quit_closure_);
const bool expect_increase = last_data.size() < expected.size();
while (true) {
clipboard->ReadAsciiText(clipboard_buffer, /* data_dst = */ nullptr,
&clipboard_data);
if (expect_increase) {
if (clipboard_data.size() >= expected.size())
break;
} else {
if (clipboard_data.size() <= expected.size())
break;
}
base::RunLoop run_loop;
clipboard_quit_closure_ = run_loop.QuitClosure();
run_loop.Run();
content::RunAllPendingInMessageLoop();
}
EXPECT_EQ(expected, clipboard_data);
EXPECT_TRUE(clipboard_changed_);
clipboard_changed_ = false;
ui::ClipboardMonitor::GetInstance()->RemoveObserver(this);
last_clipboard_data_[clipboard_buffer] = clipboard_data;
auto* clipboard = ui::Clipboard::GetForCurrentThread();
std::string clipboard_data;
clipboard->ReadAsciiText(clipboard_buffer, /* data_dst=*/nullptr,
&clipboard_data);
EXPECT_EQ(expected, clipboard_data);
}
std::map<ui::ClipboardBuffer, std::string> last_clipboard_data_;
base::RepeatingClosure clipboard_quit_closure_;
WebContents* guest_contents_;
bool clipboard_changed_ = false;
};
IN_PROC_BROWSER_TEST_F(PDFExtensionClipboardTest,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment