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)#ifndef CONTENT_PLUGIN_WEBPLUGIN_ACCELERATED_SURFACE_PROXY_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_PLUGIN_WEBPLUGIN_ACCELERATED_SURFACE_PROXY_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
9ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "content/child/npapi/webplugin_accelerated_surface_mac.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gl/gpu_preference.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AcceleratedSurface;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPluginProxy;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Out-of-process implementation of WebPluginAcceleratedSurface that proxies
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// calls through a WebPluginProxy.
19ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochclass WebPluginAcceleratedSurfaceProxy : public WebPluginAcceleratedSurface {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates a new WebPluginAcceleratedSurfaceProxy that uses plugin_proxy
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // to proxy calls. plugin_proxy must outlive this object. Returns NULL if
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // initialization fails.
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static WebPluginAcceleratedSurfaceProxy* Create(
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebPluginProxy* plugin_proxy,
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      gfx::GpuPreference gpu_preference);
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~WebPluginAcceleratedSurfaceProxy();
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // WebPluginAcceleratedSurface implementation.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetSize(const gfx::Size& size) OVERRIDE;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual CGLContextObj context() OVERRIDE;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void StartDrawing() OVERRIDE;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void EndDrawing() OVERRIDE;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebPluginAcceleratedSurfaceProxy(WebPluginProxy* plugin_proxy,
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                   AcceleratedSurface* surface);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebPluginProxy* plugin_proxy_;  // Weak ref.
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AcceleratedSurface* surface_;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(WebPluginAcceleratedSurfaceProxy);
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_PLUGIN_WEBPLUGIN_ACCELERATED_SURFACE_PROXY_H_
49