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/child/child_process.h" 9 #include "skia/ext/platform_canvas.h" 10 11 class TransportDIB; 12 13 namespace gfx { 14 class Rect; 15 } 16 17 namespace 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. 26 class 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