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

Side by Side Diff: chrome/browser/ui/views/tabs/tab_drag_controller.cc

Issue 2099513003: mus: Use the new drag API to implement tab dragging in chrome. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dragging-part-1
Patch Set: Rebase to tot Created 4 years, 5 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/BUILD.gn ('k') | chrome/browser/ui/views/tabs/window_finder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/views/tabs/tab_drag_controller.h" 5 #include "chrome/browser/ui/views/tabs/tab_drag_controller.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <set> 8 #include <set>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 #include "ash/wm/window_state_aura.h" 47 #include "ash/wm/window_state_aura.h"
48 #include "ui/wm/core/coordinate_conversion.h" 48 #include "ui/wm/core/coordinate_conversion.h"
49 #endif 49 #endif
50 50
51 #if defined(USE_AURA) 51 #if defined(USE_AURA)
52 #include "ui/aura/env.h" 52 #include "ui/aura/env.h"
53 #include "ui/aura/window.h" 53 #include "ui/aura/window.h"
54 #include "ui/wm/core/window_modality_controller.h" 54 #include "ui/wm/core/window_modality_controller.h"
55 #endif 55 #endif
56 56
57 #if defined(MOJO_SHELL_CLIENT)
58 #include "chrome/browser/ui/views/tabs/window_finder_mus.h"
59 #include "content/public/common/mojo_shell_connection.h"
60 #include "services/shell/runner/common/client_util.h"
61 #endif
62
57 using base::UserMetricsAction; 63 using base::UserMetricsAction;
58 using content::OpenURLParams; 64 using content::OpenURLParams;
59 using content::WebContents; 65 using content::WebContents;
60 66
61 // If non-null there is a drag underway. 67 // If non-null there is a drag underway.
62 static TabDragController* instance_ = NULL; 68 static TabDragController* instance_ = NULL;
63 69
64 namespace { 70 namespace {
65 71
66 // Delay, in ms, during dragging before we bring a window to front. 72 // Delay, in ms, during dragging before we bring a window to front.
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 was_source_maximized_(false), 221 was_source_maximized_(false),
216 was_source_fullscreen_(false), 222 was_source_fullscreen_(false),
217 did_restore_window_(false), 223 did_restore_window_(false),
218 end_run_loop_behavior_(END_RUN_LOOP_STOP_DRAGGING), 224 end_run_loop_behavior_(END_RUN_LOOP_STOP_DRAGGING),
219 waiting_for_run_loop_to_exit_(false), 225 waiting_for_run_loop_to_exit_(false),
220 tab_strip_to_attach_to_after_exit_(NULL), 226 tab_strip_to_attach_to_after_exit_(NULL),
221 move_loop_widget_(NULL), 227 move_loop_widget_(NULL),
222 is_mutating_(false), 228 is_mutating_(false),
223 attach_x_(-1), 229 attach_x_(-1),
224 attach_index_(-1), 230 attach_index_(-1),
225 window_finder_(new WindowFinder),
226 weak_factory_(this) { 231 weak_factory_(this) {
227 instance_ = this; 232 instance_ = this;
233
234 #if defined(MOJO_SHELL_CLIENT)
235 content::MojoShellConnection* mojo_shell_connection =
236 content::MojoShellConnection::GetForProcess();
237 if (mojo_shell_connection && shell::ShellIsRemote())
238 window_finder_.reset(new WindowFinderMus);
239 else
240 #endif
241 window_finder_.reset(new WindowFinder);
228 } 242 }
229 243
230 TabDragController::~TabDragController() { 244 TabDragController::~TabDragController() {
231 views::ViewStorage::GetInstance()->RemoveView(old_focused_view_id_); 245 views::ViewStorage::GetInstance()->RemoveView(old_focused_view_id_);
232 246
233 if (instance_ == this) 247 if (instance_ == this)
234 instance_ = NULL; 248 instance_ = NULL;
235 249
236 if (move_loop_widget_) { 250 if (move_loop_widget_) {
237 move_loop_widget_->RemoveObserver(this); 251 move_loop_widget_->RemoveObserver(this);
(...skipping 1570 matching lines...) Expand 10 before | Expand all | Expand 10 after
1808 // TODO(pkotwicz): Fix this properly (crbug.com/358482) 1822 // TODO(pkotwicz): Fix this properly (crbug.com/358482)
1809 for (auto* browser : *BrowserList::GetInstance()) { 1823 for (auto* browser : *BrowserList::GetInstance()) {
1810 if (browser->tab_strip_model()->empty()) 1824 if (browser->tab_strip_model()->empty())
1811 exclude.insert(browser->window()->GetNativeWindow()); 1825 exclude.insert(browser->window()->GetNativeWindow());
1812 } 1826 }
1813 #endif 1827 #endif
1814 base::WeakPtr<TabDragController> ref(weak_factory_.GetWeakPtr()); 1828 base::WeakPtr<TabDragController> ref(weak_factory_.GetWeakPtr());
1815 *window = window_finder_->GetLocalProcessWindowAtPoint(screen_point, exclude); 1829 *window = window_finder_->GetLocalProcessWindowAtPoint(screen_point, exclude);
1816 return ref ? Liveness::ALIVE : Liveness::DELETED; 1830 return ref ? Liveness::ALIVE : Liveness::DELETED;
1817 } 1831 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/BUILD.gn ('k') | chrome/browser/ui/views/tabs/window_finder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698