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

Unified Diff: chrome/browser/ui/views/bookmarks/bookmark_drag_drop.cc

Issue 12475013: bookmarks: Extract PerformBookmarkDrop() function out of bookmark_utils.h (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: chromeos fixes Created 7 years, 9 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
Index: chrome/browser/ui/views/bookmarks/bookmark_drag_drop.cc
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_drag_drop.cc b/chrome/browser/ui/views/bookmarks/bookmark_drag_drop.cc
deleted file mode 100644
index 239468ce264442aec8e0adbb8f50fa0bae7d87e4..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/views/bookmarks/bookmark_drag_drop.cc
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright 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.
-
-#include "chrome/browser/ui/views/bookmarks/bookmark_drag_drop.h"
-
-#include "base/message_loop.h"
-#include "base/prefs/pref_service.h"
-#include "chrome/browser/bookmarks/bookmark_model.h"
-#include "chrome/browser/bookmarks/bookmark_node_data.h"
-#include "chrome/browser/ui/bookmarks/bookmark_drag_drop.h"
-#include "chrome/common/pref_names.h"
-#include "components/user_prefs/user_prefs.h"
-#include "ui/base/dragdrop/drag_drop_types.h"
-#include "ui/base/dragdrop/os_exchange_data.h"
-#include "ui/base/events/event.h"
-#include "ui/views/drag_utils.h"
-#include "ui/views/widget/widget.h"
-
-namespace chrome {
-
-void DragBookmarks(Profile* profile,
- const std::vector<const BookmarkNode*>& nodes,
- gfx::NativeView view) {
- DCHECK(!nodes.empty());
-
- // Set up our OLE machinery
- ui::OSExchangeData data;
- BookmarkNodeData drag_data(nodes);
- drag_data.Write(profile, &data);
-
- // Allow nested message loop so we get DnD events as we drag this around.
- bool was_nested = MessageLoop::current()->IsNested();
- MessageLoop::current()->SetNestableTasksAllowed(true);
-
- int operation = ui::DragDropTypes::DRAG_COPY |
- ui::DragDropTypes::DRAG_MOVE |
- ui::DragDropTypes::DRAG_LINK;
- views::Widget* widget = views::Widget::GetWidgetForNativeView(view);
- // TODO(varunjain): Properly determine and send DRAG_EVENT_SOURCE below.
- if (widget) {
- widget->RunShellDrag(NULL, data, gfx::Point(), operation,
- ui::DragDropTypes::DRAG_EVENT_SOURCE_MOUSE);
- } else {
- // We hit this case when we're using WebContentsViewWin or
- // WebContentsViewAura, instead of WebContentsViewViews.
- views::RunShellDrag(view, data, gfx::Point(), operation,
- ui::DragDropTypes::DRAG_EVENT_SOURCE_MOUSE);
- }
-
- MessageLoop::current()->SetNestableTasksAllowed(was_nested);
-}
-
-int GetBookmarkDragOperation(content::BrowserContext* browser_context,
- const BookmarkNode* node) {
- PrefService* prefs = components::UserPrefs::Get(browser_context);
-
- int move = ui::DragDropTypes::DRAG_MOVE;
- if (!prefs->GetBoolean(prefs::kEditBookmarksEnabled))
- move = ui::DragDropTypes::DRAG_NONE;
- if (node->is_url())
- return ui::DragDropTypes::DRAG_COPY | ui::DragDropTypes::DRAG_LINK | move;
- return ui::DragDropTypes::DRAG_COPY | move;
-}
-
-int GetPreferredBookmarkDropOperation(int source_operations, int operations) {
- int common_ops = (source_operations & operations);
- if (!common_ops)
- return ui::DragDropTypes::DRAG_NONE;
- if (ui::DragDropTypes::DRAG_COPY & common_ops)
- return ui::DragDropTypes::DRAG_COPY;
- if (ui::DragDropTypes::DRAG_LINK & common_ops)
- return ui::DragDropTypes::DRAG_LINK;
- if (ui::DragDropTypes::DRAG_MOVE & common_ops)
- return ui::DragDropTypes::DRAG_MOVE;
- return ui::DragDropTypes::DRAG_NONE;
-}
-
-int GetBookmarkDropOperation(Profile* profile,
- const ui::DropTargetEvent& event,
- const BookmarkNodeData& data,
- const BookmarkNode* parent,
- int index) {
- if (data.IsFromProfile(profile) && data.size() > 1)
- // Currently only accept one dragged node at a time.
- return ui::DragDropTypes::DRAG_NONE;
-
- if (!IsValidBookmarkDropLocation(profile, data, parent, index))
- return ui::DragDropTypes::DRAG_NONE;
-
- if (data.GetFirstNode(profile))
- // User is dragging from this profile: move.
- return ui::DragDropTypes::DRAG_MOVE;
-
- // User is dragging from another app, copy.
- return GetPreferredBookmarkDropOperation(event.source_operations(),
- ui::DragDropTypes::DRAG_COPY | ui::DragDropTypes::DRAG_LINK);
-}
-
-bool IsValidBookmarkDropLocation(Profile* profile,
- const BookmarkNodeData& data,
- const BookmarkNode* drop_parent,
- int index) {
- if (!drop_parent->is_folder()) {
- NOTREACHED();
- return false;
- }
-
- if (!data.is_valid())
- return false;
-
- if (data.IsFromProfile(profile)) {
- std::vector<const BookmarkNode*> nodes = data.GetNodes(profile);
- for (size_t i = 0; i < nodes.size(); ++i) {
- // Don't allow the drop if the user is attempting to drop on one of the
- // nodes being dragged.
- const BookmarkNode* node = nodes[i];
- int node_index = (drop_parent == node->parent()) ?
- drop_parent->GetIndexOf(nodes[i]) : -1;
- if (node_index != -1 && (index == node_index || index == node_index + 1))
- return false;
-
- // drop_parent can't accept a child that is an ancestor.
- if (drop_parent->HasAncestor(node))
- return false;
- }
- return true;
- }
- // From the same profile, always accept.
- return true;
-}
-
-} // namespace chrome
« no previous file with comments | « chrome/browser/ui/views/bookmarks/bookmark_drag_drop.h ('k') | chrome/browser/ui/views/bookmarks/bookmark_drag_drop_views.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698