render_process.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CONTENT_RENDERER_RENDER_PROCESS_H_ 6#define CONTENT_RENDERER_RENDER_PROCESS_H_ 7 8#include "content/common/child_process.h" 9#include "skia/ext/platform_canvas.h" 10 11class TransportDIB; 12 13namespace gfx { 14class Rect; 15} 16 17namespace content { 18 19// A abstract interface representing the renderer end of the browser<->renderer 20// connection. The opposite end is the RenderProcessHost. This is a singleton 21// object for each renderer. 22// 23// RenderProcessImpl implements this interface for the regular browser. 24// MockRenderProcess implements this interface for certain tests, especially 25// ones derived from RenderViewTest. 26class RenderProcess : public ChildProcess { 27 public: 28 RenderProcess() {} 29 virtual ~RenderProcess() {} 30 31 // Get a canvas suitable for drawing and transporting to the browser 32 // memory: (output) the transport DIB memory 33 // rect: the rectangle which will be painted, use for sizing the canvas 34 // returns: NULL on error 35 // 36 // When no longer needed, you should pass the TransportDIB to 37 // ReleaseTransportDIB so that it can be recycled. 38 virtual SkCanvas* GetDrawingCanvas(TransportDIB** memory, 39 const gfx::Rect& rect) = 0; 40 41 // Frees shared memory allocated by AllocSharedMemory. You should only use 42 // this function to free the SharedMemory object. 43 virtual void ReleaseTransportDIB(TransportDIB* memory) = 0; 44 45 // Returns true if plugisn should be loaded in-process. 46 virtual bool UseInProcessPlugins() const = 0; 47 48 // Keep track of the cumulative set of enabled bindings for this process, 49 // across any view. 50 virtual void AddBindings(int bindings) = 0; 51 52 // The cumulative set of enabled bindings for this process. 53 virtual int GetEnabledBindings() const = 0; 54 55 // Create a new transport DIB of, at least, the given size. Return NULL on 56 // error. 57 virtual TransportDIB* CreateTransportDIB(size_t size) = 0; 58 virtual void FreeTransportDIB(TransportDIB*) = 0; 59 60 // Returns a pointer to the RenderProcess singleton instance. Assuming that 61 // we're actually a renderer or a renderer test, this static cast will 62 // be correct. 63 static RenderProcess* current() { 64 return static_cast<RenderProcess*>(ChildProcess::current()); 65 } 66 67 private: 68 DISALLOW_COPY_AND_ASSIGN(RenderProcess); 69}; 70 71} // namespace content 72 73#endif // CONTENT_RENDERER_RENDER_PROCESS_H_ 74