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