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

Side by Side Diff: chrome/browser/jankometer_win.cc

Issue 223483002: base: Do not allow MessagePumpObservers to consume events. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: tot-merge-r262009 Created 6 years, 8 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 | Annotate | Revision Log
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/jankometer.h" 5 #include "chrome/browser/jankometer.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 return; 291 return;
292 base::TimeTicks now = base::TimeTicks::Now(); 292 base::TimeTicks now = base::TimeTicks::Now();
293 const base::TimeDelta queueing_time = now - pending_task.time_posted; 293 const base::TimeDelta queueing_time = now - pending_task.time_posted;
294 helper_.StartProcessingTimers(queueing_time); 294 helper_.StartProcessingTimers(queueing_time);
295 } 295 }
296 296
297 virtual void DidProcessTask(const base::PendingTask& pending_task) OVERRIDE { 297 virtual void DidProcessTask(const base::PendingTask& pending_task) OVERRIDE {
298 helper_.EndProcessingTimers(); 298 helper_.EndProcessingTimers();
299 } 299 }
300 300
301 virtual base::EventStatus WillProcessEvent( 301 virtual void WillProcessEvent(const base::NativeEvent& event) OVERRIDE {
302 const base::NativeEvent& event) OVERRIDE {
303 if (!helper_.MessageWillBeMeasured()) 302 if (!helper_.MessageWillBeMeasured())
304 return base::EVENT_CONTINUE; 303 return;
305 // GetMessageTime returns a LONG (signed 32-bit) and GetTickCount returns 304 // GetMessageTime returns a LONG (signed 32-bit) and GetTickCount returns
306 // a DWORD (unsigned 32-bit). They both wrap around when the time is longer 305 // a DWORD (unsigned 32-bit). They both wrap around when the time is longer
307 // than they can hold. I'm not sure if GetMessageTime wraps around to 0, 306 // than they can hold. I'm not sure if GetMessageTime wraps around to 0,
308 // or if the original time comes from GetTickCount, it might wrap around 307 // or if the original time comes from GetTickCount, it might wrap around
309 // to -1. 308 // to -1.
310 // 309 //
311 // Therefore, I cast to DWORD so if it wraps to -1 we will correct it. If 310 // Therefore, I cast to DWORD so if it wraps to -1 we will correct it. If
312 // it doesn't, then our time delta will be negative if a message happens 311 // it doesn't, then our time delta will be negative if a message happens
313 // to straddle the wraparound point, it will still be OK. 312 // to straddle the wraparound point, it will still be OK.
314 DWORD cur_message_issue_time = static_cast<DWORD>(event.time); 313 DWORD cur_message_issue_time = static_cast<DWORD>(event.time);
315 DWORD cur_time = GetTickCount(); 314 DWORD cur_time = GetTickCount();
316 base::TimeDelta queueing_time = 315 base::TimeDelta queueing_time =
317 base::TimeDelta::FromMilliseconds(cur_time - cur_message_issue_time); 316 base::TimeDelta::FromMilliseconds(cur_time - cur_message_issue_time);
318 317
319 helper_.StartProcessingTimers(queueing_time); 318 helper_.StartProcessingTimers(queueing_time);
320 return base::EVENT_CONTINUE;
321 } 319 }
322 320
323 virtual void DidProcessEvent(const base::NativeEvent& event) OVERRIDE { 321 virtual void DidProcessEvent(const base::NativeEvent& event) OVERRIDE {
324 helper_.EndProcessingTimers(); 322 helper_.EndProcessingTimers();
325 } 323 }
326 324
327 private: 325 private:
328 friend class base::RefCountedThreadSafe<UIJankObserver>; 326 friend class base::RefCountedThreadSafe<UIJankObserver>;
329 327
330 virtual ~UIJankObserver() {} 328 virtual ~UIJankObserver() {}
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 delete ui_observer; 385 delete ui_observer;
388 ui_observer = NULL; 386 ui_observer = NULL;
389 } 387 }
390 if (io_observer) { 388 if (io_observer) {
391 // IO thread can't be running when we remove observers. 389 // IO thread can't be running when we remove observers.
392 DCHECK((!g_browser_process) || !(g_browser_process->io_thread())); 390 DCHECK((!g_browser_process) || !(g_browser_process->io_thread()));
393 delete io_observer; 391 delete io_observer;
394 io_observer = NULL; 392 io_observer = NULL;
395 } 393 }
396 } 394 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698