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

Side by Side Diff: packages/polymer/lib/src/job.dart

Issue 2312183003: Removed Polymer from Observatory deps (Closed)
Patch Set: 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 | « packages/polymer/lib/src/instance.dart ('k') | packages/polymer/lib/src/loader.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 part of polymer;
6
7 /// Like [Timer] but can be restarted, and if no duration is supplied uses
8 /// [window.requestAnimationFrame] instead of a 0-duration timer.
9 // TODO(jmesserly): need to find a better name here. Also this feels more like a
10 // system level API, but doesn't map exactly to any of our other primitives.
11 class PolymerJob {
12 Function _callback;
13 Timer _timer;
14 int _id; // for requestAnimationFrame
15
16 PolymerJob._();
17
18 bool get isScheduled => _timer != null || _id != null;
19
20 /// Starts the job. If the job is already running, it will [stop] first.
21 void start(void callback(), [Duration wait]) {
22 stop();
23 _callback = callback;
24 if (wait == null) {
25 _id = window.requestAnimationFrame((_) => complete());
26 } else {
27 _timer = new Timer(wait, complete);
28 }
29 }
30
31 /// Stops the job. It can be restarted by calling [start] with a new callback.
32 void stop() {
33 if (_id != null) {
34 window.cancelAnimationFrame(_id);
35 _id = null;
36 }
37 if (_timer != null) {
38 _timer.cancel();
39 _timer = null;
40 }
41 }
42
43 /// Synchronously completes the job.
44 void complete() {
45 if (isScheduled) {
46 stop();
47 _callback();
48 }
49 }
50 }
OLDNEW
« no previous file with comments | « packages/polymer/lib/src/instance.dart ('k') | packages/polymer/lib/src/loader.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698