1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/strings/utf_string_conversions.h"
6#include "chrome/browser/ui/browser.h"
7#include "chrome/browser/ui/pdf/pdf_browsertest_base.h"
8#include "chrome/browser/ui/tabs/tab_strip_model.h"
9#include "chrome/test/base/ui_test_utils.h"
10#include "content/public/browser/web_contents.h"
11#include "ui/base/clipboard/clipboard.h"
12
13// Note: All tests in here require the internal PDF plugin, so they're disabled
14// in non-official builds. We still compile them though, to prevent bitrot.
15//
16// These tests are interactive because they access the clipboard.
17
18namespace {
19
20const char kSearchKeyword[] = "adipiscing";
21
22#if defined(GOOGLE_CHROME_BUILD) && (defined(OS_WIN) || defined(OS_LINUX))
23#define MAYBE_FindAndCopy FindAndCopy
24#else
25// TODO(thestig): http://crbug.com/79837, http://crbug.com/329912
26#define MAYBE_FindAndCopy DISABLED_FindAndCopy
27#endif
28IN_PROC_BROWSER_TEST_F(PDFBrowserTest, MAYBE_FindAndCopy) {
29  ASSERT_NO_FATAL_FAILURE(Load());
30  // Verifies that find in page works.
31  ASSERT_EQ(3, ui_test_utils::FindInPage(
32      browser()->tab_strip_model()->GetActiveWebContents(),
33      base::ASCIIToUTF16(kSearchKeyword),
34      true, false, NULL, NULL));
35
36  // Verify that copying selected text works.
37  ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
38  // Reset the clipboard first.
39  clipboard->Clear(ui::CLIPBOARD_TYPE_COPY_PASTE);
40
41  browser()->tab_strip_model()->GetActiveWebContents()->Copy();
42  ASSERT_NO_FATAL_FAILURE(WaitForResponse());
43
44  std::string text;
45  clipboard->ReadAsciiText(ui::CLIPBOARD_TYPE_COPY_PASTE, &text);
46  EXPECT_EQ(kSearchKeyword, text);
47}
48
49}  // namespace
50