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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/common/FormatterWorkerPool.js

Issue 2466123002: DevTools: reformat front-end code to match chromium style. (Closed)
Patch Set: all done Created 4 years, 1 month 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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
5 /** 4 /**
6 * @constructor 5 * @unrestricted
7 */ 6 */
8 WebInspector.FormatterWorkerPool = function() 7 WebInspector.FormatterWorkerPool = class {
9 { 8 constructor() {
10 this._taskQueue = []; 9 this._taskQueue = [];
11 /** @type {!Map<!WebInspector.Worker, ?WebInspector.FormatterWorkerPool.Task >} */ 10 /** @type {!Map<!WebInspector.Worker, ?WebInspector.FormatterWorkerPool.Task >} */
12 this._workerTasks = new Map(); 11 this._workerTasks = new Map();
12 }
13
14 /**
15 * @return {!WebInspector.Worker}
16 */
17 _createWorker() {
18 var worker = new WebInspector.Worker('formatter_worker');
19 worker.onmessage = this._onWorkerMessage.bind(this, worker);
20 worker.onerror = this._onWorkerError.bind(this, worker);
21 return worker;
22 }
23
24 _processNextTask() {
25 if (!this._taskQueue.length)
26 return;
27
28 var freeWorker = this._workerTasks.keysArray().find(worker => !this._workerT asks.get(worker));
29 if (!freeWorker && this._workerTasks.size < WebInspector.FormatterWorkerPool .MaxWorkers)
30 freeWorker = this._createWorker();
31 if (!freeWorker)
32 return;
33
34 var task = this._taskQueue.shift();
35 this._workerTasks.set(freeWorker, task);
36 freeWorker.postMessage({method: task.method, params: task.params});
37 }
38
39 /**
40 * @param {!WebInspector.Worker} worker
41 * @param {!MessageEvent} event
42 */
43 _onWorkerMessage(worker, event) {
44 var task = this._workerTasks.get(worker);
45 if (task.isChunked && event.data && !event.data['isLastChunk']) {
46 task.callback(event);
47 return;
48 }
49
50 this._workerTasks.set(worker, null);
51 this._processNextTask();
52 task.callback(event.data ? event : null);
53 }
54
55 /**
56 * @param {!WebInspector.Worker} worker
57 * @param {!Event} event
58 */
59 _onWorkerError(worker, event) {
60 console.error(event);
61 var task = this._workerTasks.get(worker);
62 worker.terminate();
63 this._workerTasks.delete(worker);
64
65 var newWorker = this._createWorker();
66 this._workerTasks.set(newWorker, null);
67 this._processNextTask();
68 task.callback(null);
69 }
70
71 /**
72 * @param {string} methodName
73 * @param {!Object<string, string>} params
74 * @param {function(?MessageEvent)} callback
75 */
76 runChunkedTask(methodName, params, callback) {
77 var task = new WebInspector.FormatterWorkerPool.Task(methodName, params, cal lback, true);
78 this._taskQueue.push(task);
79 this._processNextTask();
80 }
81
82 /**
83 * @param {string} methodName
84 * @param {!Object<string, string>} params
85 * @return {!Promise<?MessageEvent>}
86 */
87 runTask(methodName, params) {
88 var callback;
89 var promise = new Promise(fulfill => callback = fulfill);
90 var task = new WebInspector.FormatterWorkerPool.Task(methodName, params, cal lback, false);
91 this._taskQueue.push(task);
92 this._processNextTask();
93 return promise;
94 }
13 }; 95 };
14 96
15 WebInspector.FormatterWorkerPool.MaxWorkers = 2; 97 WebInspector.FormatterWorkerPool.MaxWorkers = 2;
16 98
17 WebInspector.FormatterWorkerPool.prototype = {
18 /**
19 * @return {!WebInspector.Worker}
20 */
21 _createWorker: function()
22 {
23 var worker = new WebInspector.Worker("formatter_worker");
24 worker.onmessage = this._onWorkerMessage.bind(this, worker);
25 worker.onerror = this._onWorkerError.bind(this, worker);
26 return worker;
27 },
28
29 _processNextTask: function()
30 {
31 if (!this._taskQueue.length)
32 return;
33
34 var freeWorker = this._workerTasks.keysArray().find(worker => !this._wor kerTasks.get(worker));
35 if (!freeWorker && this._workerTasks.size < WebInspector.FormatterWorker Pool.MaxWorkers)
36 freeWorker = this._createWorker();
37 if (!freeWorker)
38 return;
39
40 var task = this._taskQueue.shift();
41 this._workerTasks.set(freeWorker, task);
42 freeWorker.postMessage({
43 method: task.method,
44 params: task.params
45 });
46 },
47
48 /**
49 * @param {!WebInspector.Worker} worker
50 * @param {!MessageEvent} event
51 */
52 _onWorkerMessage: function(worker, event)
53 {
54 var task = this._workerTasks.get(worker);
55 if (task.isChunked && event.data && !event.data["isLastChunk"]) {
56 task.callback(event);
57 return;
58 }
59
60 this._workerTasks.set(worker, null);
61 this._processNextTask();
62 task.callback(event.data ? event : null);
63 },
64
65 /**
66 * @param {!WebInspector.Worker} worker
67 * @param {!Event} event
68 */
69 _onWorkerError: function(worker, event)
70 {
71 console.error(event);
72 var task = this._workerTasks.get(worker);
73 worker.terminate();
74 this._workerTasks.delete(worker);
75
76 var newWorker = this._createWorker();
77 this._workerTasks.set(newWorker, null);
78 this._processNextTask();
79 task.callback(null);
80 },
81
82 /**
83 * @param {string} methodName
84 * @param {!Object<string, string>} params
85 * @param {function(?MessageEvent)} callback
86 */
87 runChunkedTask: function(methodName, params, callback)
88 {
89 var task = new WebInspector.FormatterWorkerPool.Task(methodName, params, callback, true);
90 this._taskQueue.push(task);
91 this._processNextTask();
92 },
93
94 /**
95 * @param {string} methodName
96 * @param {!Object<string, string>} params
97 * @return {!Promise<?MessageEvent>}
98 */
99 runTask: function(methodName, params)
100 {
101 var callback;
102 var promise = new Promise(fulfill => callback = fulfill);
103 var task = new WebInspector.FormatterWorkerPool.Task(methodName, params, callback, false);
104 this._taskQueue.push(task);
105 this._processNextTask();
106 return promise;
107 },
108 };
109
110 /** 99 /**
111 * @constructor 100 * @unrestricted
112 * @param {string} method
113 * @param {!Object<string, string>} params
114 * @param {function(?MessageEvent)} callback
115 * @param {boolean=} isChunked
116 */ 101 */
117 WebInspector.FormatterWorkerPool.Task = function(method, params, callback, isChu nked) 102 WebInspector.FormatterWorkerPool.Task = class {
118 { 103 /**
104 * @param {string} method
105 * @param {!Object<string, string>} params
106 * @param {function(?MessageEvent)} callback
107 * @param {boolean=} isChunked
108 */
109 constructor(method, params, callback, isChunked) {
119 this.method = method; 110 this.method = method;
120 this.params = params; 111 this.params = params;
121 this.callback = callback; 112 this.callback = callback;
122 this.isChunked = isChunked; 113 this.isChunked = isChunked;
114 }
123 }; 115 };
124 116
125 /** @type {!WebInspector.FormatterWorkerPool} */ 117 /** @type {!WebInspector.FormatterWorkerPool} */
126 WebInspector.formatterWorkerPool; 118 WebInspector.formatterWorkerPool;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698