| Index: content/browser/devtools/renderer_overrides_handler_browsertest.cc
|
| diff --git a/content/browser/devtools/renderer_overrides_handler_browsertest.cc b/content/browser/devtools/renderer_overrides_handler_browsertest.cc
|
| index d869d9d6e6cbd34d2a0234f7626c2110a87728dc..2a3a667c03ccfc5b21ded4f02c5f877ba2ce31a4 100644
|
| --- a/content/browser/devtools/renderer_overrides_handler_browsertest.cc
|
| +++ b/content/browser/devtools/renderer_overrides_handler_browsertest.cc
|
| @@ -2,37 +2,30 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "base/basictypes.h"
|
| +#include "base/base64.h"
|
| +#include "base/command_line.h"
|
| #include "base/json/json_reader.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "content/browser/devtools/renderer_overrides_handler.h"
|
| +#include "content/browser/devtools/devtools_protocol.h"
|
| #include "content/public/browser/devtools_agent_host.h"
|
| +#include "content/public/browser/devtools_client_host.h"
|
| +#include "content/public/browser/devtools_manager.h"
|
| #include "content/public/browser/web_contents.h"
|
| +#include "content/public/test/browser_test_utils.h"
|
| #include "content/public/test/content_browser_test.h"
|
| -#include "content/public/test/content_browser_test_utils.h"
|
| #include "content/shell/browser/shell.h"
|
| +#include "third_party/skia/include/core/SkBitmap.h"
|
| +#include "ui/compositor/compositor_switches.h"
|
| +#include "ui/gfx/codec/png_codec.h"
|
|
|
| namespace content {
|
|
|
| -class RendererOverridesHandlerTest : public ContentBrowserTest {
|
| +class RendererOverridesHandlerTest : public ContentBrowserTest,
|
| + public DevToolsClientHost {
|
| protected:
|
| - scoped_refptr<DevToolsProtocol::Response> SendCommand(
|
| - const std::string& method,
|
| - base::DictionaryValue* params) {
|
| - scoped_ptr<RendererOverridesHandler> handler(CreateHandler());
|
| - scoped_refptr<DevToolsProtocol::Command> command(
|
| - DevToolsProtocol::CreateCommand(1, method, params));
|
| - return handler->HandleCommand(command);
|
| - }
|
| -
|
| - void SendAsyncCommand(const std::string& method,
|
| - base::DictionaryValue* params) {
|
| - scoped_ptr<RendererOverridesHandler> handler(CreateHandler());
|
| - scoped_refptr<DevToolsProtocol::Command> command(
|
| - DevToolsProtocol::CreateCommand(1, method, params));
|
| - scoped_refptr<DevToolsProtocol::Response> response =
|
| - handler->HandleCommand(command);
|
| - EXPECT_TRUE(response->is_async_promise());
|
| + void SendCommand(const std::string& method,
|
| + base::DictionaryValue* params) {
|
| + EXPECT_TRUE(DevToolsManager::GetInstance()->DispatchOnInspectorBackend(this,
|
| + DevToolsProtocol::CreateCommand(1, method, params)->Serialize()));
|
| base::MessageLoop::current()->Run();
|
| }
|
|
|
| @@ -64,30 +57,40 @@ class RendererOverridesHandlerTest : public ContentBrowserTest {
|
| scoped_ptr<base::DictionaryValue> result_;
|
|
|
| private:
|
| - RendererOverridesHandler* CreateHandler() {
|
| - RenderViewHost* rvh = shell()->web_contents()->GetRenderViewHost();
|
| - DevToolsAgentHost* agent = DevToolsAgentHost::GetOrCreateFor(rvh).get();
|
| - scoped_ptr<RendererOverridesHandler> handler(
|
| - new RendererOverridesHandler(agent));
|
| - handler->SetNotifier(base::Bind(
|
| - &RendererOverridesHandlerTest::OnMessageSent, base::Unretained(this)));
|
| - return handler.release();
|
| + virtual void SetUpOnMainThread() OVERRIDE {
|
| + DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor(
|
| + DevToolsAgentHost::GetOrCreateFor(
|
| + shell()->web_contents()->GetRenderViewHost()).get(),
|
| + this);
|
| + }
|
| +
|
| + virtual void TearDownOnMainThread() OVERRIDE {
|
| + DevToolsManager::GetInstance()->ClientHostClosing(this);
|
| }
|
|
|
| - void OnMessageSent(const std::string& message) {
|
| + virtual void DispatchOnInspectorFrontend(
|
| + const std::string& message) OVERRIDE {
|
| scoped_ptr<base::DictionaryValue> root(
|
| static_cast<base::DictionaryValue*>(base::JSONReader::Read(message)));
|
| base::DictionaryValue* result;
|
| - root->GetDictionary("result", &result);
|
| + EXPECT_TRUE(root->GetDictionary("result", &result));
|
| result_.reset(result->DeepCopy());
|
| base::MessageLoop::current()->QuitNow();
|
| }
|
| +
|
| + virtual void InspectedContentsClosing() OVERRIDE {
|
| + EXPECT_TRUE(false);
|
| + }
|
| +
|
| + virtual void ReplacedWithAnotherClient() OVERRIDE {
|
| + EXPECT_TRUE(false);
|
| + }
|
| };
|
|
|
| IN_PROC_BROWSER_TEST_F(RendererOverridesHandlerTest, QueryUsageAndQuota) {
|
| base::DictionaryValue* params = new base::DictionaryValue();
|
| params->SetString("securityOrigin", "http://example.com");
|
| - SendAsyncCommand("Page.queryUsageAndQuota", params);
|
| + SendCommand("Page.queryUsageAndQuota", params);
|
|
|
| EXPECT_TRUE(HasValue("quota.persistent"));
|
| EXPECT_TRUE(HasValue("quota.temporary"));
|
| @@ -98,4 +101,38 @@ IN_PROC_BROWSER_TEST_F(RendererOverridesHandlerTest, QueryUsageAndQuota) {
|
| EXPECT_TRUE(HasListItem("usage.persistent", "id", "filesystem"));
|
| }
|
|
|
| +class CaptureScreenshotTest : public RendererOverridesHandlerTest {
|
| + private:
|
| +#if !defined(OS_ANDROID)
|
| + virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE {
|
| + command_line->AppendSwitch(switches::kEnablePixelOutputInTests);
|
| + }
|
| +#endif
|
| +};
|
| +
|
| +// Does not link on Android
|
| +#if defined(OS_ANDROID)
|
| +#define MAYBE_CaptureScreenshot DISABLED_CaptureScreenshot
|
| +#else
|
| +#define MAYBE_CaptureScreenshot CaptureScreenshot
|
| +#endif
|
| +IN_PROC_BROWSER_TEST_F(CaptureScreenshotTest, MAYBE_CaptureScreenshot) {
|
| + shell()->LoadURL(GURL("about:blank"));
|
| + EXPECT_TRUE(content::ExecuteScript(
|
| + shell()->web_contents()->GetRenderViewHost(),
|
| + "document.body.style.background = '#123456'"));
|
| + SendCommand("Page.captureScreenshot", new base::DictionaryValue());
|
| + std::string base64;
|
| + EXPECT_TRUE(result_->GetString("data", &base64));
|
| + std::string png;
|
| + EXPECT_TRUE(base::Base64Decode(base64, &png));
|
| + SkBitmap bitmap;
|
| + gfx::PNGCodec::Decode(reinterpret_cast<const unsigned char*>(png.data()),
|
| + png.size(), &bitmap);
|
| + SkColor color(bitmap.getColor(0, 0));
|
| + EXPECT_TRUE(std::abs(0x12-(int)SkColorGetR(color)) <= 1);
|
| + EXPECT_TRUE(std::abs(0x34-(int)SkColorGetG(color)) <= 1);
|
| + EXPECT_TRUE(std::abs(0x56-(int)SkColorGetB(color)) <= 1);
|
| +}
|
| +
|
| } // namespace content
|
|
|