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

Side by Side Diff: runtime/bin/vmservice/observatory/deployed/web/packages/template_binding/js/flush.js

Issue 839543002: Revert "Build Observatory with runtime" (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 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
(Empty)
1 /*
2 * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
3 * This code may only be used under the BSD style license found at http://polyme r.github.io/LICENSE.txt
4 * The complete set of authors may be found at http://polymer.github.io/AUTHORS. txt
5 * The complete set of contributors may be found at http://polymer.github.io/CON TRIBUTORS.txt
6 * Code distributed by Google as part of the polymer project is also
7 * subject to an additional IP rights grant found at http://polymer.github.io/PA TENTS.txt
8 */
9
10 (function(scope) {
11
12 /**
13 * @class Polymer
14 */
15
16 // imports
17 var endOfMicrotask = scope.endOfMicrotask;
18
19 // logging
20 var log = window.WebComponents ? WebComponents.flags.log : {};
21
22 // inject style sheet
23 var style = document.createElement('style');
24 style.textContent = 'template {display: none !important;} /* injected by platfor m.js */';
25 var head = document.querySelector('head');
26 head.insertBefore(style, head.firstChild);
27
28
29 /**
30 * Force any pending data changes to be observed before
31 * the next task. Data changes are processed asynchronously but are guaranteed
32 * to be processed, for example, before paintin. This method should rarely be
33 * needed. It does nothing when Object.observe is available;
34 * when Object.observe is not available, Polymer automatically flushes data
35 * changes approximately every 1/10 second.
36 * Therefore, `flush` should only be used when a data mutation should be
37 * observed sooner than this.
38 *
39 * @method flush
40 */
41 // flush (with logging)
42 var flushing;
43 function flush() {
44 if (!flushing) {
45 flushing = true;
46 endOfMicrotask(function() {
47 flushing = false;
48 log.data && console.group('flush');
49 Platform.performMicrotaskCheckpoint();
50 log.data && console.groupEnd();
51 });
52 }
53 };
54
55 // polling dirty checker
56 // flush periodically if platform does not have object observe.
57 if (!Observer.hasObjectObserve) {
58 var FLUSH_POLL_INTERVAL = 125;
59 window.addEventListener('WebComponentsReady', function() {
60 flush();
61 // watch document visiblity to toggle dirty-checking
62 var visibilityHandler = function() {
63 // only flush if the page is visibile
64 if (document.visibilityState === 'hidden') {
65 if (scope.flushPoll) {
66 clearInterval(scope.flushPoll);
67 }
68 } else {
69 scope.flushPoll = setInterval(flush, FLUSH_POLL_INTERVAL);
70 }
71 };
72 if (typeof document.visibilityState === 'string') {
73 document.addEventListener('visibilitychange', visibilityHandler);
74 }
75 visibilityHandler();
76 });
77 } else {
78 // make flush a no-op when we have Object.observe
79 flush = function() {};
80 }
81
82 if (window.CustomElements && !CustomElements.useNative) {
83 var originalImportNode = Document.prototype.importNode;
84 Document.prototype.importNode = function(node, deep) {
85 var imported = originalImportNode.call(this, node, deep);
86 CustomElements.upgradeAll(imported);
87 return imported;
88 };
89 }
90
91 // exports
92 scope.flush = flush;
93 // bc
94 Platform.flush = flush;
95
96 })(window.Polymer);
97
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698