| OLD | NEW |
| 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/ash/tab_scrubber.h" | 5 #include "chrome/browser/ui/views/ash/tab_scrubber.h" |
| 6 | 6 |
| 7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
| 8 #include "ash/wm/window_util.h" | 8 #include "ash/wm/window_util.h" |
| 9 #include "base/metrics/histogram.h" |
| 9 #include "chrome/browser/ui/browser.h" | 10 #include "chrome/browser/ui/browser.h" |
| 10 #include "chrome/browser/ui/browser_finder.h" | 11 #include "chrome/browser/ui/browser_finder.h" |
| 11 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 12 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 12 #include "chrome/browser/ui/views/frame/browser_view.h" | 13 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 13 #include "chrome/browser/ui/views/immersive_mode_controller.h" | 14 #include "chrome/browser/ui/views/immersive_mode_controller.h" |
| 14 #include "chrome/browser/ui/views/tabs/tab.h" | 15 #include "chrome/browser/ui/views/tabs/tab.h" |
| 15 #include "chrome/browser/ui/views/tabs/tab_strip.h" | 16 #include "chrome/browser/ui/views/tabs/tab_strip.h" |
| 16 #include "chrome/common/chrome_notification_types.h" | 17 #include "chrome/common/chrome_notification_types.h" |
| 17 #include "content/public/browser/notification_service.h" | 18 #include "content/public/browser/notification_service.h" |
| 18 #include "content/public/browser/notification_source.h" | 19 #include "content/public/browser/notification_source.h" |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 activate_timer_.Stop(); | 255 activate_timer_.Stop(); |
| 255 | 256 |
| 256 if (browser_ && browser_->window()) { | 257 if (browser_ && browser_->window()) { |
| 257 BrowserView* browser_view = | 258 BrowserView* browser_view = |
| 258 BrowserView::GetBrowserViewForNativeWindow( | 259 BrowserView::GetBrowserViewForNativeWindow( |
| 259 browser_->window()->GetNativeWindow()); | 260 browser_->window()->GetNativeWindow()); |
| 260 TabStrip* tab_strip = browser_view->tabstrip(); | 261 TabStrip* tab_strip = browser_view->tabstrip(); |
| 261 if (activate && highlighted_tab_ != -1) { | 262 if (activate && highlighted_tab_ != -1) { |
| 262 Tab* tab = tab_strip->tab_at(highlighted_tab_); | 263 Tab* tab = tab_strip->tab_at(highlighted_tab_); |
| 263 tab->hover_controller()->HideImmediately(); | 264 tab->hover_controller()->HideImmediately(); |
| 265 int distance = |
| 266 std::abs( |
| 267 highlighted_tab_ - browser_->tab_strip_model()->active_index()); |
| 268 UMA_HISTOGRAM_CUSTOM_COUNTS("TabScrubber.Distance", distance, 0, 20, 20); |
| 264 browser_->tab_strip_model()->ActivateTabAt(highlighted_tab_, true); | 269 browser_->tab_strip_model()->ActivateTabAt(highlighted_tab_, true); |
| 265 } | 270 } |
| 266 tab_strip->RemoveObserver(this); | 271 tab_strip->RemoveObserver(this); |
| 267 if (!cancel_immersive_reveal_timer_.IsRunning() && | 272 if (!cancel_immersive_reveal_timer_.IsRunning() && |
| 268 should_cancel_immersive_reveal_) { | 273 should_cancel_immersive_reveal_) { |
| 269 cancel_immersive_reveal_timer_.Start( | 274 cancel_immersive_reveal_timer_.Start( |
| 270 FROM_HERE, | 275 FROM_HERE, |
| 271 base::TimeDelta::FromMilliseconds(kCancelImmersiveRevelDelayMS), | 276 base::TimeDelta::FromMilliseconds(kCancelImmersiveRevelDelayMS), |
| 272 base:: Bind(&TabScrubber::CancelImmersiveReveal, | 277 base:: Bind(&TabScrubber::CancelImmersiveReveal, |
| 273 weak_ptr_factory_.GetWeakPtr())); | 278 weak_ptr_factory_.GetWeakPtr())); |
| 274 } | 279 } |
| 275 } | 280 } |
| 276 swipe_x_ = -1; | 281 swipe_x_ = -1; |
| 277 swipe_y_ = -1; | 282 swipe_y_ = -1; |
| 278 scrubbing_ = false; | 283 scrubbing_ = false; |
| 279 highlighted_tab_ = -1; | 284 highlighted_tab_ = -1; |
| 280 } | 285 } |
| 281 | 286 |
| 282 void TabScrubber::CancelImmersiveReveal() { | 287 void TabScrubber::CancelImmersiveReveal() { |
| 283 cancel_immersive_reveal_timer_.Stop(); | 288 cancel_immersive_reveal_timer_.Stop(); |
| 284 if (browser_ && should_cancel_immersive_reveal_) { | 289 if (browser_ && should_cancel_immersive_reveal_) { |
| 285 BrowserView* browser_view = | 290 BrowserView* browser_view = |
| 286 BrowserView::GetBrowserViewForNativeWindow( | 291 BrowserView::GetBrowserViewForNativeWindow( |
| 287 browser_->window()->GetNativeWindow()); | 292 browser_->window()->GetNativeWindow()); |
| 288 browser_view->immersive_mode_controller()->CancelReveal(); | 293 browser_view->immersive_mode_controller()->CancelReveal(); |
| 289 } | 294 } |
| 290 should_cancel_immersive_reveal_ = false; | 295 should_cancel_immersive_reveal_ = false; |
| 291 } | 296 } |
| OLD | NEW |