// Copyright (c) 2012 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. #ifndef CONTENT_PLUGIN_WEBPLUGIN_ACCELERATED_SURFACE_PROXY_MAC_H_ #define CONTENT_PLUGIN_WEBPLUGIN_ACCELERATED_SURFACE_PROXY_MAC_H_ #include "base/compiler_specific.h" #include "base/macros.h" #include "content/child/npapi/webplugin_accelerated_surface_mac.h" #include "ui/gl/gpu_preference.h" class AcceleratedSurface; namespace content { class WebPluginProxy; // Out-of-process implementation of WebPluginAcceleratedSurface that proxies // calls through a WebPluginProxy. class WebPluginAcceleratedSurfaceProxy : public WebPluginAcceleratedSurface { public: // Creates a new WebPluginAcceleratedSurfaceProxy that uses plugin_proxy // to proxy calls. plugin_proxy must outlive this object. Returns NULL if // initialization fails. static WebPluginAcceleratedSurfaceProxy* Create( WebPluginProxy* plugin_proxy, gfx::GpuPreference gpu_preference); ~WebPluginAcceleratedSurfaceProxy() override; // WebPluginAcceleratedSurface implementation. void SetSize(const gfx::Size& size) override; CGLContextObj context() override; void StartDrawing() override; void EndDrawing() override; private: WebPluginAcceleratedSurfaceProxy(WebPluginProxy* plugin_proxy, AcceleratedSurface* surface); WebPluginProxy* plugin_proxy_; // Weak ref. AcceleratedSurface* surface_; DISALLOW_COPY_AND_ASSIGN(WebPluginAcceleratedSurfaceProxy); }; } // namespace content #endif // CONTENT_PLUGIN_WEBPLUGIN_ACCELERATED_SURFACE_PROXY_MAC_H_