Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1022)

Unified Diff: content/browser/devtools/renderer_overrides_handler_browsertest.cc

Issue 311313003: DevTools: Fix for Page.captureScreenshot (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed debug hook Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « content/browser/devtools/renderer_overrides_handler.cc ('k') | content/browser/renderer_host/render_widget_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698