Commit f09769a1 authored by Lei Zhang's avatar Lei Zhang Committed by Commit Bot

Revert "Stop polling in PDFExtensionClipboardTest."

This reverts commit 5e803e36.

Reason for revert: Collided with https://crrev.com/801651

Original change's description:
> 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/+/2376765
> Reviewed-by: Stuart Langley <slangley@chromium.org>
> Commit-Queue: Lei Zhang <thestig@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#802025}

TBR=thestig@chromium.org,slangley@chromium.org

Change-Id: I20774cf96cf6a64c5f593852004a2c079e790320
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 1121446
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2378742Reviewed-by: default avatarLei Zhang <thestig@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#802037}
parent 90a2e3e2
...@@ -97,8 +97,6 @@ ...@@ -97,8 +97,6 @@
#include "ui/accessibility/ax_tree.h" #include "ui/accessibility/ax_tree.h"
#include "ui/accessibility/platform/ax_platform_node_delegate_base.h" #include "ui/accessibility/platform/ax_platform_node_delegate_base.h"
#include "ui/base/clipboard/clipboard.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/clipboard/test/test_clipboard.h"
#include "ui/base/resource/resource_bundle.h" #include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/geometry/point.h" #include "ui/gfx/geometry/point.h"
...@@ -1898,29 +1896,21 @@ IN_PROC_BROWSER_TEST_F(PDFExtensionInternalLinkClickTest, ShiftLeft) { ...@@ -1898,29 +1896,21 @@ IN_PROC_BROWSER_TEST_F(PDFExtensionInternalLinkClickTest, ShiftLeft) {
EXPECT_EQ("page=2&zoom=100,0,200", url.ref()); EXPECT_EQ("page=2&zoom=100,0,200", url.ref());
} }
class PDFExtensionClipboardTest : public PDFExtensionTest, class PDFExtensionClipboardTest : public PDFExtensionTest {
public ui::ClipboardObserver {
public: public:
PDFExtensionClipboardTest() : guest_contents_(nullptr) {} PDFExtensionClipboardTest() : guest_contents_(nullptr) {}
~PDFExtensionClipboardTest() override {} ~PDFExtensionClipboardTest() override {}
// PDFExtensionTest:
void SetUpOnMainThread() override { void SetUpOnMainThread() override {
PDFExtensionTest::SetUpOnMainThread(); PDFExtensionTest::SetUpOnMainThread();
ui::TestClipboard::CreateForCurrentThread(); ui::TestClipboard::CreateForCurrentThread();
} }
void TearDownOnMainThread() override { void TearDownOnMainThread() override {
ui::Clipboard::DestroyClipboardForCurrentThread(); ui::Clipboard::DestroyClipboardForCurrentThread();
PDFExtensionTest::TearDownOnMainThread(); PDFExtensionTest::TearDownOnMainThread();
} }
// ui::ClipboardObserver:
void OnClipboardDataChanged() override {
DCHECK(!clipboard_changed_);
clipboard_changed_ = true;
std::move(clipboard_quit_closure_).Run();
}
void LoadTestComboBoxPdfGetGuestContents() { void LoadTestComboBoxPdfGetGuestContents() {
GURL test_pdf_url(embedded_test_server()->GetURL("/pdf/combobox_form.pdf")); GURL test_pdf_url(embedded_test_server()->GetURL("/pdf/combobox_form.pdf"));
guest_contents_ = LoadPdfGetGuestContents(test_pdf_url); guest_contents_ = LoadPdfGetGuestContents(test_pdf_url);
...@@ -2017,30 +2007,45 @@ class PDFExtensionClipboardTest : public PDFExtensionTest, ...@@ -2017,30 +2007,45 @@ class PDFExtensionClipboardTest : public PDFExtensionTest,
} }
private: 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, void CheckClipboard(ui::ClipboardBuffer clipboard_buffer,
const std::string& expected) { const std::string& expected) {
ui::ClipboardMonitor::GetInstance()->AddObserver(this);
DCHECK(!clipboard_changed_);
DCHECK(!clipboard_quit_closure_);
base::RunLoop run_loop;
clipboard_quit_closure_ = run_loop.QuitClosure();
run_loop.Run();
EXPECT_TRUE(clipboard_changed_);
clipboard_changed_ = false;
ui::ClipboardMonitor::GetInstance()->RemoveObserver(this);
auto* clipboard = ui::Clipboard::GetForCurrentThread(); auto* clipboard = ui::Clipboard::GetForCurrentThread();
std::string clipboard_data; std::string clipboard_data;
clipboard->ReadAsciiText(clipboard_buffer, /* data_dst=*/nullptr, const std::string& last_data = last_clipboard_data_[clipboard_buffer];
&clipboard_data); 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;
}
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;
}
content::RunAllPendingInMessageLoop();
}
EXPECT_EQ(expected, clipboard_data); EXPECT_EQ(expected, clipboard_data);
last_clipboard_data_[clipboard_buffer] = clipboard_data;
} }
base::RepeatingClosure clipboard_quit_closure_; std::map<ui::ClipboardBuffer, std::string> last_clipboard_data_;
WebContents* guest_contents_; WebContents* guest_contents_;
bool clipboard_changed_ = false;
}; };
IN_PROC_BROWSER_TEST_F(PDFExtensionClipboardTest, 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