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

Side by Side Diff: chrome/browser/sync/engine/syncer_thread.h

Issue 553051: Add support for UserIdleTime to Linux. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 11 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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 // A class to run the syncer on a thread. 5 // A class to run the syncer on a thread.
6 // This is the default implementation of SyncerThread whose Stop implementation 6 // This is the default implementation of SyncerThread whose Stop implementation
7 // does not support a timeout, but is greatly simplified. 7 // does not support a timeout, but is greatly simplified.
8 #ifndef CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_ 8 #ifndef CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_
9 #define CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_ 9 #define CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_
10 10
11 #include <list> 11 #include <list>
12 #include <map> 12 #include <map>
13 #include <queue> 13 #include <queue>
14 #include <vector> 14 #include <vector>
15 15
16 #include "base/basictypes.h" 16 #include "base/basictypes.h"
17 #include "base/condition_variable.h" 17 #include "base/condition_variable.h"
18 #include "base/ref_counted.h" 18 #include "base/ref_counted.h"
19 #include "base/scoped_ptr.h" 19 #include "base/scoped_ptr.h"
20 #include "base/thread.h" 20 #include "base/thread.h"
21 #include "base/time.h" 21 #include "base/time.h"
22 #include "base/waitable_event.h" 22 #include "base/waitable_event.h"
23 #include "chrome/browser/sync/engine/all_status.h" 23 #include "chrome/browser/sync/engine/all_status.h"
24 #if defined(OS_LINUX)
25 #include "chrome/browser/sync/engine/idle_query_linux.h"
26 #endif
24 #include "chrome/browser/sync/sessions/sync_session.h" 27 #include "chrome/browser/sync/sessions/sync_session.h"
25 #include "chrome/browser/sync/util/event_sys-inl.h" 28 #include "chrome/browser/sync/util/event_sys-inl.h"
26 #include "testing/gtest/include/gtest/gtest_prod.h" // For FRIEND_TEST 29 #include "testing/gtest/include/gtest/gtest_prod.h" // For FRIEND_TEST
27 30
28 class EventListenerHookup; 31 class EventListenerHookup;
29 32
30 namespace syncable { 33 namespace syncable {
31 class DirectoryManager; 34 class DirectoryManager;
32 struct DirectoryManagerEvent; 35 struct DirectoryManagerEvent;
33 } 36 }
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 // If |was_throttled| was true, this still discards elapsed nudges, but we 243 // If |was_throttled| was true, this still discards elapsed nudges, but we
241 // treat the request as a periodic poll rather than a nudge from a source. 244 // treat the request as a periodic poll rather than a nudge from a source.
242 // TODO(timsteele/code reviewer): The first poll after a throttle period 245 // TODO(timsteele/code reviewer): The first poll after a throttle period
243 // will appear as a periodic request. Do we want to be more specific? 246 // will appear as a periodic request. Do we want to be more specific?
244 // Returns true if it determines a nudge actually occurred. 247 // Returns true if it determines a nudge actually occurred.
245 bool UpdateNudgeSource(bool was_throttled, bool continue_sync_cycle, 248 bool UpdateNudgeSource(bool was_throttled, bool continue_sync_cycle,
246 bool* initial_sync); 249 bool* initial_sync);
247 void SetUpdatesSource(bool nudged, NudgeSource nudge_source, 250 void SetUpdatesSource(bool nudged, NudgeSource nudge_source,
248 bool* initial_sync); 251 bool* initial_sync);
249 252
253 int UserIdleTime();
254
250 // For unit tests only. 255 // For unit tests only.
251 virtual void DisableIdleDetection() { disable_idle_detection_ = true; } 256 virtual void DisableIdleDetection() { disable_idle_detection_ = true; }
252 257
253 // State of the notification framework is tracked by these values. 258 // State of the notification framework is tracked by these values.
254 bool p2p_authenticated_; 259 bool p2p_authenticated_;
255 bool p2p_subscribed_; 260 bool p2p_subscribed_;
256 261
257 scoped_ptr<EventListenerHookup> conn_mgr_hookup_; 262 scoped_ptr<EventListenerHookup> conn_mgr_hookup_;
258 const AllStatus* allstatus_; 263 const AllStatus* allstatus_;
259 264
(...skipping 13 matching lines...) Expand all
273 278
274 // This causes syncer to start syncing ASAP. If the rate of requests is too 279 // This causes syncer to start syncing ASAP. If the rate of requests is too
275 // high the request will be silently dropped. mutex_ should be held when 280 // high the request will be silently dropped. mutex_ should be held when
276 // this is called. 281 // this is called.
277 void NudgeSyncImpl(int milliseconds_from_now, NudgeSource source); 282 void NudgeSyncImpl(int milliseconds_from_now, NudgeSource source);
278 283
279 scoped_ptr<EventListenerHookup> talk_mediator_hookup_; 284 scoped_ptr<EventListenerHookup> talk_mediator_hookup_;
280 scoped_ptr<EventListenerHookup> directory_manager_hookup_; 285 scoped_ptr<EventListenerHookup> directory_manager_hookup_;
281 scoped_ptr<EventListenerHookup> syncer_events_; 286 scoped_ptr<EventListenerHookup> syncer_events_;
282 287
288 #if defined(OS_LINUX)
289 // On Linux, we need this information in order to query idle time.
290 scoped_ptr<IdleQueryLinux> idle_query_;
291 #endif
292
283 scoped_ptr<sessions::SyncSessionContext> session_context_; 293 scoped_ptr<sessions::SyncSessionContext> session_context_;
284 294
285 // Events from the Syncer's syncer_event_channel are first processed by the 295 // Events from the Syncer's syncer_event_channel are first processed by the
286 // SyncerThread and then get relayed onto this channel for consumers. 296 // SyncerThread and then get relayed onto this channel for consumers.
287 // TODO(timsteele): Wow did this confused me. I had removed the channel from 297 // TODO(timsteele): Wow did this confused me. I had removed the channel from
288 // here thinking there was only one, and then realized this relay was 298 // here thinking there was only one, and then realized this relay was
289 // happening. Is this strict event handling order needed?! 299 // happening. Is this strict event handling order needed?!
290 scoped_ptr<SyncerEventChannel> syncer_event_relay_channel_; 300 scoped_ptr<SyncerEventChannel> syncer_event_relay_channel_;
291 301
292 // Set whenever the server instructs us to stop sending it requests until 302 // Set whenever the server instructs us to stop sending it requests until
293 // a specified time, and reset for each call to SyncShare. (Note that the 303 // a specified time, and reset for each call to SyncShare. (Note that the
294 // WaitInterval::THROTTLED contract is such that we don't call SyncShare at 304 // WaitInterval::THROTTLED contract is such that we don't call SyncShare at
295 // all until the "silenced until" embargo expires.) 305 // all until the "silenced until" embargo expires.)
296 base::TimeTicks silenced_until_; 306 base::TimeTicks silenced_until_;
297 307
298 // Useful for unit tests 308 // Useful for unit tests
299 bool disable_idle_detection_; 309 bool disable_idle_detection_;
300 310
301 DISALLOW_COPY_AND_ASSIGN(SyncerThread); 311 DISALLOW_COPY_AND_ASSIGN(SyncerThread);
302 }; 312 };
303 313
304 } // namespace browser_sync 314 } // namespace browser_sync
305 315
306 #endif // CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_ 316 #endif // CHROME_BROWSER_SYNC_ENGINE_SYNCER_THREAD_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698