15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/test/mock_render_process.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/surface/transport_dib.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockRenderProcess::MockRenderProcess()
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : transport_dib_next_sequence_number_(0),
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      enabled_bindings_(0) {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockRenderProcess::~MockRenderProcess() {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)skia::PlatformCanvas* MockRenderProcess::GetDrawingCanvas(
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    TransportDIB** memory,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const gfx::Rect& rect) {
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  size_t stride = skia::PlatformCanvasStrideForWidth(rect.width());
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  size_t size = stride * rect.height();
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Unlike RenderProcessImpl, when we're a test, we can just create transport
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // DIBs in the current process, since there is no sandbox protecting us (and
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // no browser process to ask for one in any case).
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *memory = TransportDIB::Create(size, transport_dib_next_sequence_number_++);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!*memory)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return NULL;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return (*memory)->GetPlatformCanvas(rect.width(), rect.height());
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockRenderProcess::ReleaseTransportDIB(TransportDIB* memory) {
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  delete memory;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool MockRenderProcess::UseInProcessPlugins() const {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockRenderProcess::AddBindings(int bindings) {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enabled_bindings_ |= bindings;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int MockRenderProcess::GetEnabledBindings() const {
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return enabled_bindings_;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TransportDIB* MockRenderProcess::CreateTransportDIB(size_t size) {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return TransportDIB::Create(size, transport_dib_next_sequence_number_++);
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockRenderProcess::FreeTransportDIB(TransportDIB* dib) {
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  delete dib;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
60