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

Unified Diff: webkit/glue/webcursor.h

Issue 15088: Add support for custom cursors set by windowless plugins. Windowless plugins... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 11 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/webplugin_delegate_impl.cc ('k') | webkit/glue/webcursor.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/glue/webcursor.h
===================================================================
--- webkit/glue/webcursor.h (revision 7750)
+++ webkit/glue/webcursor.h (working copy)
@@ -5,6 +5,7 @@
#ifndef WEBKIT_GLUE_WEBCURSOR_H_
#define WEBKIT_GLUE_WEBCURSOR_H_
+#include "base/basictypes.h"
#include "base/gfx/point.h"
#include "base/gfx/size.h"
@@ -40,7 +41,12 @@
public:
WebCursor();
explicit WebCursor(const WebCore::PlatformCursor& platform_cursor);
+ ~WebCursor();
+ // Copy constructor/assignment operator combine.
+ WebCursor(const WebCursor& other);
+ const WebCursor& operator=(const WebCursor& other);
+
// Serialization / De-serialization
bool Deserialize(const Pickle* pickle, void** iter);
bool Serialize(Pickle* pickle) const;
@@ -55,18 +61,16 @@
bool IsEqual(const WebCursor& other) const;
#if defined(OS_WIN)
- // If the underlying cursor type is not a custom cursor, this functions uses
- // the LoadCursor API to load the cursor and returns it. The caller SHOULD
- // NOT pass the resulting handling to DestroyCursor. Returns NULL on error.
- HCURSOR GetCursor(HINSTANCE module_handle) const;
+ // Returns a HCURSOR representing the current WebCursor instance.
+ // The ownership of the HCURSOR (does not apply to external cursors) remains
+ // with the WebCursor instance.
+ HCURSOR GetCursor(HINSTANCE module_handle);
- // If the underlying cursor type is a custom cursor, this function generates
- // a cursor and returns it. The responsiblity of freeing the cursor handle
- // lies with the caller. Returns NULL on error.
- HCURSOR GetCustomCursor() const;
+ // Initialize this from the given Windows cursor. The caller must ensure that
+ // the HCURSOR remains valid by not invoking the DestroyCursor/DestroyIcon
+ // APIs on it.
+ void InitFromExternalCursor(HCURSOR handle);
- // Initialize this from the given Windows cursor.
- void InitFromCursor(HCURSOR handle);
#elif defined(OS_LINUX)
// Return the stock GdkCursorType for this cursor, or GDK_CURSOR_IS_PIXMAP
// if it's a custom cursor.
@@ -80,6 +84,29 @@
#endif
private:
+ // Copies the contents of the WebCursor instance passed in.
+ void Copy(const WebCursor& other);
+
+ // Cleans up the WebCursor instance.
+ void Clear();
+
+ // Platform specific initialization goes here.
+ void InitPlatformData();
+
+ // Platform specific Serialization / De-serialization
+ bool SerializePlatformData(Pickle* pickle) const;
+ bool DeserializePlatformData(const Pickle* pickle, void** iter);
+
+ // Returns true if the platform data in the current cursor object
+ // matches that of the cursor passed in.
+ bool IsPlatformDataEqual(const WebCursor& other) const ;
+
+ // Copies platform specific data from the WebCursor instance passed in.
+ void CopyPlatformData(const WebCursor& other);
+
+ // Platform specific cleanup.
+ void CleanupPlatformData();
+
void SetCustomData(WebCore::Image* image);
// WebCore::PlatformCursor type.
@@ -91,6 +118,14 @@
// Platform-inspecific because it can be serialized.
gfx::Size custom_size_;
std::vector<char> custom_data_;
+
+#if defined(OS_WIN)
+ // An externally generated HCURSOR. We assume that it remains valid, i.e we
+ // don't attempt to copy the HCURSOR.
+ HCURSOR external_cursor_;
+ // A custom cursor created from custom bitmap data by Webkit.
+ HCURSOR custom_cursor_;
+#endif // OS_WIN
};
#endif // WEBKIT_GLUE_WEBCURSOR_H_
« no previous file with comments | « webkit/glue/plugins/webplugin_delegate_impl.cc ('k') | webkit/glue/webcursor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698