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

Side by Side Diff: ui/message_center/popup_timer.cc

Issue 2315513002: Reset popup dismissal timers when replacing a notification. (Closed)
Patch Set: Reset popup dismissal timers when replacing a notification. Created 4 years, 3 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 | « ui/message_center/popup_timer.h ('k') | ui/message_center/popup_timers_controller.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) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 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 "ui/message_center/popup_timer.h" 5 #include "ui/message_center/popup_timer.h"
6 6
7 namespace message_center { 7 namespace message_center {
8 8
9 PopupTimer::PopupTimer(const std::string& id, 9 PopupTimer::PopupTimer(const std::string& id,
10 base::TimeDelta timeout, 10 base::TimeDelta timeout,
11 base::WeakPtr<Delegate> delegate) 11 base::WeakPtr<Delegate> delegate)
12 : id_(id), 12 : id_(id),
13 timeout_(timeout), 13 timeout_(timeout),
14 timer_delegate_(delegate), 14 timer_delegate_(delegate),
15 timer_(new base::OneShotTimer) {} 15 timer_(new base::OneShotTimer) {
16 DCHECK(timer_delegate_);
17 }
16 18
17 PopupTimer::~PopupTimer() { 19 PopupTimer::~PopupTimer() {
18 if (!timer_)
19 return;
20
21 if (timer_->IsRunning()) 20 if (timer_->IsRunning())
22 timer_->Stop(); 21 timer_->Stop();
23 } 22 }
24 23
25 void PopupTimer::Start() { 24 void PopupTimer::Start() {
26 if (timer_->IsRunning()) 25 if (timer_->IsRunning())
27 return; 26 return;
27
28 base::TimeDelta timeout_to_close = 28 base::TimeDelta timeout_to_close =
29 timeout_ <= passed_ ? base::TimeDelta() : timeout_ - passed_; 29 timeout_ <= passed_ ? base::TimeDelta() : timeout_ - passed_;
30 start_time_ = base::Time::Now(); 30 start_time_ = base::Time::Now();
31 31
32 DCHECK(timer_delegate_);
33 timer_->Start( 32 timer_->Start(
34 FROM_HERE, timeout_to_close, 33 FROM_HERE, timeout_to_close,
35 base::Bind(&Delegate::TimerFinished, timer_delegate_, id_)); 34 base::Bind(&Delegate::TimerFinished, timer_delegate_, id_));
36 } 35 }
37 36
38 void PopupTimer::Pause() { 37 void PopupTimer::Pause() {
39 if (!timer_ || !timer_->IsRunning()) 38 if (!timer_->IsRunning())
40 return; 39 return;
41 40
42 timer_->Stop(); 41 timer_->Stop();
43 passed_ += base::Time::Now() - start_time_; 42 passed_ += base::Time::Now() - start_time_;
44 } 43 }
45 44
46 void PopupTimer::Reset() {
47 if (timer_)
48 timer_->Stop();
49 passed_ = base::TimeDelta();
50 }
51
52 } // namespace message_center 45 } // namespace message_center
OLDNEW
« no previous file with comments | « ui/message_center/popup_timer.h ('k') | ui/message_center/popup_timers_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698