summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-18 17:10:18 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-18 17:10:18 +0000
commit2ca8a064a206fba910dc0f50f8a2f2509828d8f1 (patch)
tree9e128f90d2392b901aca101baabe12dd36621943 /chrome/browser/extensions
parent911f815112d8d11778c771467fbef2c2b1f8e160 (diff)
downloadchromium_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.cc45
-rw-r--r--chrome/browser/extensions/extension_bookmark_manager_api.h11
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_;