diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-18 17:10:18 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-18 17:10:18 +0000 |
commit | 2ca8a064a206fba910dc0f50f8a2f2509828d8f1 (patch) | |
tree | 9e128f90d2392b901aca101baabe12dd36621943 /chrome/browser/extensions | |
parent | 911f815112d8d11778c771467fbef2c2b1f8e160 (diff) | |
download | chromium_src-2ca8a064a206fba910dc0f50f8a2f2509828d8f1.zip chromium_src-2ca8a064a206fba910dc0f50f8a2f2509828d8f1.tar.gz chromium_src-2ca8a064a206fba910dc0f50f8a2f2509828d8f1.tar.bz2 |
GTK: implement extension bookmark manager drag api.
Also, cross-platform: eschew RenderViewHostDelegate:BookmarkDrag::DragData type in favor of BookmarkDragData.
BUG=37702
TEST=manual
Review URL: http://codereview.chromium.org/1029004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41959 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions')
-rw-r--r-- | chrome/browser/extensions/extension_bookmark_manager_api.cc | 45 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_bookmark_manager_api.h | 11 |
2 files changed, 22 insertions, 34 deletions
diff --git a/chrome/browser/extensions/extension_bookmark_manager_api.cc b/chrome/browser/extensions/extension_bookmark_manager_api.cc index f12e62f..5c589ba 100644 --- a/chrome/browser/extensions/extension_bookmark_manager_api.cc +++ b/chrome/browser/extensions/extension_bookmark_manager_api.cc @@ -27,8 +27,6 @@ namespace keys = extension_bookmarks_module_constants; namespace { -typedef RenderViewHostDelegate::BookmarkDrag::DragData DragData; - // Returns a single bookmark node from the argument ID. // This returns NULL in case of failure. const BookmarkNode* GetNodeFromArguments(BookmarkModel* model, @@ -136,21 +134,6 @@ void BookmarkDragDataToJSON(Profile* profile, const BookmarkDragData& data, args->Append(value); } -// This is the platform specific function that takes the drag data and creates -// the BookmarkDragData as needed. -bool GetBookmarkDragData(const DragData* data, - BookmarkDragData* bookmark_drag_data) { -#if defined(TOOLKIT_VIEWS) - // On TOOLKIT_VIEWS DragData is OSExchangeData. - return bookmark_drag_data->Read(*data); -#elif defined(OS_MACOSX) - return bookmark_drag_data->ReadFromDragClipboard(); -#else - NOTIMPLEMENTED(); - return false; -#endif -} - } // namespace ExtensionBookmarkManagerEventRouter::ExtensionBookmarkManagerEventRouter( @@ -177,34 +160,38 @@ void ExtensionBookmarkManagerEventRouter::DispatchEvent(const char* event_name, } void ExtensionBookmarkManagerEventRouter::DispatchDragEvent( - const DragData* data, const char* event_name) { - BookmarkDragData bookmark_drag_data; - if (::GetBookmarkDragData(data, &bookmark_drag_data)) { - ListValue args; - BookmarkDragDataToJSON(profile_, bookmark_drag_data, &args); - DispatchEvent(event_name, &args); - } + const BookmarkDragData& data, const char* event_name) { + if (data.size() == 0) + return; + + ListValue args; + BookmarkDragDataToJSON(profile_, data, &args); + DispatchEvent(event_name, &args); } -void ExtensionBookmarkManagerEventRouter::OnDragEnter(const DragData* data) { +void ExtensionBookmarkManagerEventRouter::OnDragEnter( + const BookmarkDragData& data) { DispatchDragEvent(data, keys::kOnBookmarkDragEnter); } -void ExtensionBookmarkManagerEventRouter::OnDragOver(const DragData* data) { +void ExtensionBookmarkManagerEventRouter::OnDragOver( + const BookmarkDragData& data) { // Intentionally empty since these events happens too often and floods the // message queue. We do not need this event for the bookmark manager anyway. } -void ExtensionBookmarkManagerEventRouter::OnDragLeave(const DragData* data) { +void ExtensionBookmarkManagerEventRouter::OnDragLeave( + const BookmarkDragData& data) { DispatchDragEvent(data, keys::kOnBookmarkDragLeave); } -void ExtensionBookmarkManagerEventRouter::OnDrop(const DragData* data) { +void ExtensionBookmarkManagerEventRouter::OnDrop( + const BookmarkDragData& data) { DispatchDragEvent(data, keys::kOnBookmarkDrop); // Make a copy that is owned by this instance. ClearBookmarkDragData(); - ::GetBookmarkDragData(data, &bookmark_drag_data_); + bookmark_drag_data_ = data; } const BookmarkDragData* diff --git a/chrome/browser/extensions/extension_bookmark_manager_api.h b/chrome/browser/extensions/extension_bookmark_manager_api.h index 3ab9964..b15e07c 100644 --- a/chrome/browser/extensions/extension_bookmark_manager_api.h +++ b/chrome/browser/extensions/extension_bookmark_manager_api.h @@ -11,6 +11,7 @@ #include "chrome/browser/renderer_host/render_view_host_delegate.h" #include "chrome/browser/shell_dialogs.h" +struct BookmarkDragData; class BookmarkNode; class ListValue; class Profile; @@ -25,10 +26,10 @@ class ExtensionBookmarkManagerEventRouter virtual ~ExtensionBookmarkManagerEventRouter(); // RenderViewHostDelegate::BookmarkDrag interface - virtual void OnDragEnter(const DragData* data); - virtual void OnDragOver(const DragData* data); - virtual void OnDragLeave(const DragData* data); - virtual void OnDrop(const DragData* data); + virtual void OnDragEnter(const BookmarkDragData& data); + virtual void OnDragOver(const BookmarkDragData& data); + virtual void OnDragLeave(const BookmarkDragData& data); + virtual void OnDrop(const BookmarkDragData& data); // The bookmark drag and drop data. This gets set after a drop was done on // the page. This returns NULL if no data is available. @@ -41,7 +42,7 @@ class ExtensionBookmarkManagerEventRouter // Helper to actually dispatch an event to extension listeners. void DispatchEvent(const char* event_name, const ListValue* args); - void DispatchDragEvent(const DragData* data, const char* event_name); + void DispatchDragEvent(const BookmarkDragData& data, const char* event_name); Profile* profile_; TabContents* tab_contents_; |