Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(464)

Unified Diff: webkit/glue/plugins/pepper_device_context_2d.h

Issue 3255003: Pull new PPAPI, rename non-P0 interfaces to Dev, rename DeviceContext2D to Gr... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/glue/plugins/pepper_cursor_control.cc ('k') | webkit/glue/plugins/pepper_device_context_2d.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/glue/plugins/pepper_device_context_2d.h
===================================================================
--- webkit/glue/plugins/pepper_device_context_2d.h (revision 57791)
+++ webkit/glue/plugins/pepper_device_context_2d.h (working copy)
@@ -1,175 +0,0 @@
-// Copyright (c) 2010 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 WEBKIT_GLUE_PLUGINS_PEPPER_DEVICE_CONTEXT_2D_H_
-#define WEBKIT_GLUE_PLUGINS_PEPPER_DEVICE_CONTEXT_2D_H_
-
-#include <vector>
-
-#include "base/basictypes.h"
-#include "third_party/ppapi/c/pp_completion_callback.h"
-#include "third_party/ppapi/c/ppb_device_context_2d.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebCanvas.h"
-#include "webkit/glue/plugins/pepper_resource.h"
-
-typedef struct _ppb_DeviceContext2D PPB_DeviceContext2D;
-
-namespace gfx {
-class Rect;
-}
-
-namespace pepper {
-
-class ImageData;
-class PluginInstance;
-class PluginModule;
-
-class DeviceContext2D : public Resource {
- public:
- DeviceContext2D(PluginModule* module);
- virtual ~DeviceContext2D();
-
- // Returns a pointer to the interface implementing PPB_ImageData that is
- // exposed to the plugin.
- static const PPB_DeviceContext2D* GetInterface();
-
- bool Init(int width, int height, bool is_always_opaque);
-
- // Resource override.
- virtual DeviceContext2D* AsDeviceContext2D() { return this; }
-
- // PPB_DeviceContext2D functions.
- bool Describe(PP_Size* size, bool* is_always_opaque);
- bool PaintImageData(PP_Resource image,
- const PP_Point* top_left,
- const PP_Rect* src_rect);
- bool Scroll(const PP_Rect* clip_rect, const PP_Point* amount);
- bool ReplaceContents(PP_Resource image);
- int32_t Flush(const PP_CompletionCallback& callback);
-
- bool ReadImageData(PP_Resource image, const PP_Point* top_left);
-
- // Assciates this device with the given plugin instance. You can pass NULL to
- // clear the existing device. Returns true on success. In this case, a
- // repaint of the page will also be scheduled. Failure means that the device
- // is already bound to a different instance, and nothing will happen.
- bool BindToInstance(PluginInstance* new_instance);
-
- // Paints the current backing store to the web page.
- void Paint(WebKit::WebCanvas* canvas,
- const gfx::Rect& plugin_rect,
- const gfx::Rect& paint_rect);
-
- // Notifications that the view has rendered the page and that it has been
- // flushed to the screen. These messages are used to send Flush callbacks to
- // the plugin. See
- void ViewInitiatedPaint();
- void ViewFlushedPaint();
-
- ImageData* image_data() { return image_data_.get(); }
-
- private:
- // Tracks a call to flush that requires a callback.
- class FlushCallbackData {
- public:
- FlushCallbackData() {
- Clear();
- }
-
- FlushCallbackData(const PP_CompletionCallback& callback) {
- Set(callback);
- }
-
- bool is_null() const { return !callback_.func; }
-
- void Set(const PP_CompletionCallback& callback) {
- callback_ = callback;
- }
-
- void Clear() {
- callback_ = PP_MakeCompletionCallback(NULL, 0);
- }
-
- void Execute(int32_t result) {
- PP_RunCompletionCallback(&callback_, result);
- }
-
- private:
- PP_CompletionCallback callback_;
- };
-
- // Called internally to execute the different queued commands. The
- // parameters to these functions will have already been validated. The last
- // rect argument will be filled by each function with the area affected by
- // the update that requires invalidation. If there were no pixels changed,
- // this rect can be untouched.
- void ExecutePaintImageData(ImageData* image,
- int x, int y,
- const gfx::Rect& src_rect,
- gfx::Rect* invalidated_rect);
- void ExecuteScroll(const gfx::Rect& clip, int dx, int dy,
- gfx::Rect* invalidated_rect);
- void ExecuteReplaceContents(ImageData* image,
- gfx::Rect* invalidated_rect);
-
- // Schedules the offscreen callback to be fired at a future time. This
- // will add the given item to the offscreen_flush_callbacks_ vector.
- void ScheduleOffscreenCallback(const FlushCallbackData& callback);
-
- // Function scheduled to execute by ScheduleOffscreenCallback that actually
- // issues the offscreen callbacks.
- void ExecuteOffscreenCallback(FlushCallbackData data);
-
- // Returns true if there is any type of flush callback pending.
- bool HasPendingFlush() const;
-
- scoped_refptr<ImageData> image_data_;
-
- // Non-owning pointer to the plugin instance this device context is currently
- // bound to, if any. If the device context is currently unbound, this will
- // be NULL.
- PluginInstance* bound_instance_;
-
- // Keeps track of all drawing commands queued before a Flush call.
- struct QueuedOperation;
- typedef std::vector<QueuedOperation> OperationQueue;
- OperationQueue queued_operations_;
-
- // Indicates whether any changes have been flushed to the backing store.
- // This is initially false and is set to true at the first Flush() call.
- bool flushed_any_data_;
-
- // The plugin can give us one "Flush" at a time. This flush will either be in
- // the "unpainted" state (in which case unpainted_flush_callback_ will be
- // non-NULL) or painted, in which case painted_flush_callback_ will be
- // non-NULL). There can also be an offscreen callback which is handled
- // separately (see offscreen_callback_pending_). Only one of these three
- // things may be set at a time to enforce the "only one pending flush at a
- // time" constraint.
- //
- // "Unpainted" ones are flush requests which have never been painted. These
- // could have been done while the RenderView was already waiting for an ACK
- // from a previous paint, so won't generate a new one yet.
- //
- // "Painted" ones are those flushes that have been painted by RenderView, but
- // for which the ACK from the browser has not yet been received.
- //
- // When we get updates from a plugin with a callback, it is first added to
- // the unpainted callbacks. When the renderer has initiated a paint, we'll
- // move it to the painted callbacks list. When the renderer receives a flush,
- // we'll execute the callback and remove it from the list.
- FlushCallbackData unpainted_flush_callback_;
- FlushCallbackData painted_flush_callback_;
-
- // When doing offscreen flushes, we issue a task that issues the callback
- // later. This is set when one of those tasks is pending so that we can
- // enforce the "only one pending flush at a time" constraint in the API.
- bool offscreen_flush_pending_;
-
- DISALLOW_COPY_AND_ASSIGN(DeviceContext2D);
-};
-
-} // namespace pepper
-
-#endif // WEBKIT_GLUE_PLUGINS_PEPPER_DEVICE_CONTEXT_2D_H_
« no previous file with comments | « webkit/glue/plugins/pepper_cursor_control.cc ('k') | webkit/glue/plugins/pepper_device_context_2d.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698