summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/mock_render_process.cc
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-06 02:53:28 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-06 02:53:28 +0000
commit00c39612a3ec84f8d1f26975f3936bffc183591a (patch)
tree92474ab446150f025becaefd3868e02f72bea1fc /chrome/renderer/mock_render_process.cc
parent23dd7db09af6da5643e10d839b23d484a5b41eab (diff)
downloadchromium_src-00c39612a3ec84f8d1f26975f3936bffc183591a.zip
chromium_src-00c39612a3ec84f8d1f26975f3936bffc183591a.tar.gz
chromium_src-00c39612a3ec84f8d1f26975f3936bffc183591a.tar.bz2
Make the pepper 2D flush callback actually function as advertised. It will now
get called asynchronously when the bits are actually copied to the screen, rather than synchronously from inside the paint function. This makes it useful for plugins to use the callback for rate limiting. This also adds a lot of infrastructure for running tests on pepper devices, and includes a unit test for the new flush behavior. I made the existing RenderProcess object an abstract interface and made the existing MockProcess (renamed to be more clear) implement that. This avoids a static cast that would actually crash during a unit test because some code was hardcoded to expect a RenderProcess object. This fixes base's IDMap iterator which has apparently never been used for an IDMap with ownership semantics. TEST=Unit test included BUG=none Original review URL: http://codereview.chromium.org/661124 Review URL: http://codereview.chromium.org/664001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40813 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/mock_render_process.cc')
-rw-r--r--chrome/renderer/mock_render_process.cc44
1 files changed, 44 insertions, 0 deletions
diff --git a/chrome/renderer/mock_render_process.cc b/chrome/renderer/mock_render_process.cc
new file mode 100644
index 0000000..a71fcab
--- /dev/null
+++ b/chrome/renderer/mock_render_process.cc
@@ -0,0 +1,44 @@
+// Copyright (c) 2010 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/renderer/mock_render_process.h"
+
+#include "base/gfx/rect.h"
+#include "chrome/common/transport_dib.h"
+
+MockRenderProcess::MockRenderProcess()
+ : transport_dib_next_sequence_number_(0) {
+}
+
+MockRenderProcess::~MockRenderProcess() {
+}
+
+skia::PlatformCanvas* MockRenderProcess::GetDrawingCanvas(
+ TransportDIB** memory,
+ const gfx::Rect& rect) {
+ size_t stride = skia::PlatformCanvas::StrideForWidth(rect.width());
+ size_t size = stride * rect.height();
+
+ // Unlike RenderProcessImpl, when we're a test, we can just create transport
+ // DIBs in the current process, since there is no sandbox protecting us (and
+ // no browser process to ask for one in any case).
+ *memory = TransportDIB::Create(size, transport_dib_next_sequence_number_++);
+ if (!*memory)
+ return NULL;
+ return (*memory)->GetPlatformCanvas(rect.width(), rect.height());
+}
+
+void MockRenderProcess::ReleaseTransportDIB(TransportDIB* memory) {
+ delete memory;
+}
+
+bool MockRenderProcess::UseInProcessPlugins() const {
+ return true;
+}
+
+bool MockRenderProcess::HasInitializedMediaLibrary() const {
+ return false;
+}
+
+