| Index: chrome/browser/ui/pdf/pdf_browsertest_base.cc
|
| diff --git a/chrome/browser/ui/pdf/pdf_browsertest_base.cc b/chrome/browser/ui/pdf/pdf_browsertest_base.cc
|
| deleted file mode 100644
|
| index a230021d09ac12d9de328153e0af8b56e8da7bc4..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/pdf/pdf_browsertest_base.cc
|
| +++ /dev/null
|
| @@ -1,204 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/ui/pdf/pdf_browsertest_base.h"
|
| -
|
| -#include <algorithm>
|
| -#include <vector>
|
| -
|
| -#include "base/command_line.h"
|
| -#include "base/path_service.h"
|
| -#include "base/strings/string_number_conversions.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "chrome/browser/chrome_notification_types.h"
|
| -#include "chrome/browser/ui/browser.h"
|
| -#include "chrome/browser/ui/browser_window.h"
|
| -#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| -#include "chrome/common/chrome_paths.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| -#include "chrome/test/base/ui_test_utils.h"
|
| -#include "content/public/browser/render_view_host.h"
|
| -#include "content/public/browser/web_contents.h"
|
| -#include "third_party/skia/include/core/SkBitmap.h"
|
| -#include "ui/gfx/codec/png_codec.h"
|
| -#include "ui/gfx/screen.h"
|
| -
|
| -#if defined(OS_LINUX)
|
| -#include "content/public/common/content_switches.h"
|
| -#endif
|
| -
|
| -#if defined(OS_CHROMEOS)
|
| -#include "ui/compositor/compositor_switches.h"
|
| -#endif
|
| -
|
| -namespace {
|
| -
|
| -// Include things like browser frame and scrollbar and make sure we're bigger
|
| -// than the test pdf document.
|
| -const int kBrowserWidth = 1000;
|
| -const int kBrowserHeight = 600;
|
| -
|
| -} // namespace
|
| -
|
| -PDFBrowserTest::PDFBrowserTest()
|
| - : snapshot_different_(true),
|
| - next_dummy_search_value_(0),
|
| - load_stop_notification_count_(0) {
|
| - base::FilePath src_dir;
|
| - EXPECT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &src_dir));
|
| - pdf_test_server_.ServeFilesFromDirectory(src_dir.AppendASCII(
|
| - "chrome/test/data/pdf_private"));
|
| -}
|
| -
|
| -PDFBrowserTest::~PDFBrowserTest() {
|
| -}
|
| -
|
| -void PDFBrowserTest::Load() {
|
| - // Make sure to set the window size before rendering, as otherwise rendering
|
| - // to a smaller window and then expanding leads to slight anti-aliasing
|
| - // differences of the text and the pixel comparison fails.
|
| - gfx::Rect bounds(gfx::Rect(0, 0, kBrowserWidth, kBrowserHeight));
|
| - gfx::Rect screen_bounds =
|
| - gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().bounds();
|
| - ASSERT_GT(screen_bounds.width(), kBrowserWidth);
|
| - ASSERT_GT(screen_bounds.height(), kBrowserHeight);
|
| - browser()->window()->SetBounds(bounds);
|
| -
|
| - GURL url(ui_test_utils::GetTestUrl(
|
| - base::FilePath(FILE_PATH_LITERAL("pdf_private")),
|
| - base::FilePath(FILE_PATH_LITERAL("pdf_browsertest.pdf"))));
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -}
|
| -
|
| -void PDFBrowserTest::WaitForResponse() {
|
| - // Even if the plugin has loaded the data or scrolled, because of how
|
| - // pepper painting works, we might not have the data. One way to force this
|
| - // to be flushed is to do a find operation, since on this two-page test
|
| - // document, it'll wait for us to flush the renderer message loop twice and
|
| - // also the browser's once, at which point we're guaranteed to have updated
|
| - // the backingstore. Hacky, but it works.
|
| - // Note that we need to change the text each time, because if we don't the
|
| - // renderer code will think the second message is to go to next result, but
|
| - // there are none so the plugin will assert.
|
| -
|
| - base::string16 query = base::UTF8ToUTF16(
|
| - std::string("xyzxyz" + base::IntToString(next_dummy_search_value_++)));
|
| - ASSERT_EQ(0, ui_test_utils::FindInPage(
|
| - browser()->tab_strip_model()->GetActiveWebContents(),
|
| - query, true, false, NULL, NULL));
|
| -}
|
| -
|
| -bool PDFBrowserTest::VerifySnapshot(const std::string& expected_filename) {
|
| - snapshot_different_ = true;
|
| - expected_filename_ = expected_filename;
|
| - content::WebContents* web_contents =
|
| - browser()->tab_strip_model()->GetActiveWebContents();
|
| - DCHECK(web_contents);
|
| -
|
| - content::RenderWidgetHost* rwh = web_contents->GetRenderViewHost();
|
| - rwh->CopyFromBackingStore(
|
| - gfx::Rect(),
|
| - gfx::Size(),
|
| - base::Bind(&PDFBrowserTest::CopyFromBackingStoreCallback, this),
|
| - kN32_SkColorType);
|
| -
|
| - content::RunMessageLoop();
|
| -
|
| - if (snapshot_different_) {
|
| - LOG(INFO) << "Rendering didn't match, see result "
|
| - << snapshot_filename_.value();
|
| - }
|
| - return !snapshot_different_;
|
| -}
|
| -
|
| -void PDFBrowserTest::CopyFromBackingStoreCallback(
|
| - const SkBitmap& bitmap,
|
| - content::ReadbackResponse response) {
|
| - base::MessageLoopForUI::current()->Quit();
|
| - ASSERT_EQ(response, content::READBACK_SUCCESS);
|
| - base::FilePath reference = ui_test_utils::GetTestFilePath(
|
| - base::FilePath(FILE_PATH_LITERAL("pdf_private")),
|
| - base::FilePath().AppendASCII(expected_filename_));
|
| - base::File::Info info;
|
| - ASSERT_TRUE(base::GetFileInfo(reference, &info));
|
| - int size = static_cast<size_t>(info.size);
|
| - scoped_ptr<char[]> data(new char[size]);
|
| - ASSERT_EQ(size, base::ReadFile(reference, data.get(), size));
|
| -
|
| - int w, h;
|
| - std::vector<unsigned char> decoded;
|
| - ASSERT_TRUE(gfx::PNGCodec::Decode(
|
| - reinterpret_cast<unsigned char*>(data.get()), size,
|
| - gfx::PNGCodec::FORMAT_BGRA, &decoded, &w, &h));
|
| - int32* ref_pixels = reinterpret_cast<int32*>(&decoded[0]);
|
| -
|
| - SkAutoLockPixels lock_image(bitmap);
|
| - int32* pixels = static_cast<int32*>(bitmap.getPixels());
|
| -
|
| - // Get the background color, and use it to figure out the x-offsets in
|
| - // each image. The reason is that depending on the theme in the OS, the
|
| - // same browser width can lead to slightly different plugin sizes, so the
|
| - // pdf content will start at different x offsets.
|
| - // Also note that the images we saved are cut off before the scrollbar, as
|
| - // that'll change depending on the theme, and also cut off vertically so
|
| - // that the ui controls don't show up, as those fade-in and so the timing
|
| - // will affect their transparency.
|
| - int32 bg_color = ref_pixels[0];
|
| - int ref_x_offset, snapshot_x_offset;
|
| - for (ref_x_offset = 0; ref_x_offset < w; ++ref_x_offset) {
|
| - if (ref_pixels[ref_x_offset] != bg_color)
|
| - break;
|
| - }
|
| -
|
| - for (snapshot_x_offset = 0; snapshot_x_offset < bitmap.width();
|
| - ++snapshot_x_offset) {
|
| - if (pixels[snapshot_x_offset] != bg_color)
|
| - break;
|
| - }
|
| -
|
| - int x_max = std::min(w - ref_x_offset, bitmap.width() - snapshot_x_offset);
|
| - int y_max = std::min(h, bitmap.height());
|
| - int stride = bitmap.rowBytes();
|
| - snapshot_different_ = false;
|
| - for (int y = 0; y < y_max && !snapshot_different_; ++y) {
|
| - for (int x = 0; x < x_max && !snapshot_different_; ++x) {
|
| - if (pixels[y * stride / sizeof(int32) + x + snapshot_x_offset] !=
|
| - ref_pixels[y * w + x + ref_x_offset])
|
| - snapshot_different_ = true;
|
| - }
|
| - }
|
| -
|
| - if (snapshot_different_) {
|
| - std::vector<unsigned char> png_data;
|
| - gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &png_data);
|
| - if (base::CreateTemporaryFile(&snapshot_filename_)) {
|
| - base::WriteFile(snapshot_filename_,
|
| - reinterpret_cast<char*>(&png_data[0]), png_data.size());
|
| - }
|
| - }
|
| -}
|
| -
|
| -void PDFBrowserTest::Observe(int type,
|
| - const content::NotificationSource& source,
|
| - const content::NotificationDetails& details) {
|
| - DCHECK_EQ(content::NOTIFICATION_LOAD_STOP, type);
|
| - load_stop_notification_count_++;
|
| -}
|
| -
|
| -void PDFBrowserTest::SetUpCommandLine(base::CommandLine* command_line) {
|
| - // Due to the changed architecture of the OOP PDF plugin, these tests don't
|
| - // pass and need to be reworked. crbug.com/436444.
|
| - command_line->AppendSwitch(switches::kDisableOutOfProcessPdf);
|
| -
|
| -#if defined(OS_LINUX)
|
| - // Calling RenderWidgetHost::CopyFromBackingStore() with the GPU enabled
|
| - // fails on Linux.
|
| - command_line->AppendSwitch(switches::kDisableGpu);
|
| -#endif
|
| -
|
| -#if defined(OS_CHROMEOS)
|
| - // Also need on CrOS in addition to disabling the GPU above.
|
| - command_line->AppendSwitch(switches::kUIDisableThreadedCompositing);
|
| -#endif
|
| -}
|
|
|