Skip to content

Commit c3dc373

Browse files
committed
refactor(change_detector): moves enableRecord/disableRecord into the Record class
1 parent 7f941eb commit c3dc373

File tree

3 files changed

+44
-44
lines changed

3 files changed

+44
-44
lines changed

modules/change_detection/src/record.js

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -177,14 +177,39 @@ export class Record {
177177
return ! this.disabled;
178178
}
179179

180-
set disabled(value:boolean) {
180+
_setDisabled(value:boolean) {
181181
if (value) {
182182
this._mode |= RECORD_FLAG_DISABLED;
183183
} else {
184184
this._mode &= ~RECORD_FLAG_DISABLED;
185185
}
186186
}
187187

188+
enable() {
189+
if (this.isEnabled()) return;
190+
191+
var prevEnabled = this.findPrevEnabled();
192+
var nextEnabled = this.findNextEnabled();
193+
194+
this.prevEnabled = prevEnabled;
195+
this.nextEnabled = nextEnabled;
196+
197+
if (isPresent(prevEnabled)) prevEnabled.nextEnabled = this;
198+
if (isPresent(nextEnabled)) nextEnabled.prevEnabled = this;
199+
200+
this._setDisabled(false);
201+
}
202+
203+
disable() {
204+
var prevEnabled = this.prevEnabled;
205+
var nextEnabled = this.nextEnabled;
206+
207+
if (isPresent(prevEnabled)) prevEnabled.nextEnabled = nextEnabled;
208+
if (isPresent(nextEnabled)) nextEnabled.prevEnabled = prevEnabled;
209+
210+
this._setDisabled(true);
211+
}
212+
188213
get isImplicitReceiver():boolean {
189214
return (this._mode & RECORD_FLAG_IMPLICIT_RECEIVER) === RECORD_FLAG_IMPLICIT_RECEIVER;
190215
}
@@ -237,7 +262,7 @@ export class Record {
237262

238263
case RECORD_TYPE_NULL:
239264
// no need to check the content again unless the context changes
240-
this.recordRange.disableRecord(this);
265+
this.disable();
241266
this.currentValue = null;
242267
return true;
243268

@@ -259,11 +284,11 @@ export class Record {
259284

260285
case RECORD_TYPE_INVOKE_PURE_FUNCTION:
261286
case RECORD_TYPE_INVOKE_FORMATTER:
262-
this.recordRange.disableRecord(this);
287+
this.disable();
263288
return FunctionWrapper.apply(this.funcOrValue, this.args);
264289

265290
case RECORD_TYPE_CONST:
266-
this.recordRange.disableRecord(this);
291+
this.disable();
267292
return this.funcOrValue;
268293

269294
default:
@@ -273,12 +298,12 @@ export class Record {
273298

274299
updateArg(value, position:int) {
275300
this.args[position] = value;
276-
this.recordRange.enableRecord(this);
301+
this.enable();
277302
}
278303

279304
updateContext(value) {
280305
this.context = value;
281-
this.recordRange.enableRecord(this);
306+
this.enable();
282307

283308
if (this.isCollection) {
284309
if (ArrayChanges.supports(value)) {
@@ -327,7 +352,7 @@ export class Record {
327352
*
328353
* [H ER1 T] [H ER2 T] _nextEnable(ER1) will return ER2
329354
*
330-
* The function skips disabled sub ranges.
355+
* The function skips disabled ranges.
331356
*/
332357
findNextEnabled() {
333358
if (this.isEnabled()) return this.nextEnabled;
@@ -348,7 +373,7 @@ export class Record {
348373
*
349374
* [H ER1 T] [H ER2 T] _nextEnable(ER2) will return ER1
350375
*
351-
* The function skips disabled sub ranges.
376+
* The function skips disabled ranges.
352377
*/
353378
findPrevEnabled() {
354379
if (this.isEnabled()) return this.prevEnabled;

modules/change_detection/src/record_range.js

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -163,31 +163,6 @@ export class RecordRange {
163163
}
164164
}
165165

166-
disableRecord(record:Record) {
167-
var prevEnabled = record.prevEnabled;
168-
var nextEnabled = record.nextEnabled;
169-
170-
if (isPresent(prevEnabled)) prevEnabled.nextEnabled = nextEnabled;
171-
if (isPresent(nextEnabled)) nextEnabled.prevEnabled = prevEnabled;
172-
173-
record.disabled = true;
174-
}
175-
176-
enableRecord(record:Record) {
177-
if (record.isEnabled()) return;
178-
179-
var prevEnabled = record.findPrevEnabled();
180-
var nextEnabled = record.findNextEnabled();
181-
182-
record.prevEnabled = prevEnabled;
183-
record.nextEnabled = nextEnabled;
184-
185-
if (isPresent(prevEnabled)) prevEnabled.nextEnabled = record;
186-
if (isPresent(nextEnabled)) nextEnabled.prevEnabled = record;
187-
188-
record.disabled = false;
189-
}
190-
191166
disable() {
192167
var firstEnabledChildRecord = this.findFirstEnabledRecord();
193168
if (isPresent(firstEnabledChildRecord)) {

modules/change_detection/test/record_range_spec.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -190,16 +190,16 @@ export function main() {
190190
it('should disable a single record', () => {
191191
rr.addRecord(record1);
192192

193-
rr.disableRecord(record1);
193+
record1.disable();
194194

195195
expect(enabledRecords(rr, recordNames)).toEqual([]);
196196
});
197197

198198
it('should enable a single record', () => {
199199
rr.addRecord(record1);
200-
rr.disableRecord(record1);
200+
record1.disable();
201201

202-
rr.enableRecord(record1);
202+
record1.enable();
203203

204204
expect(enabledRecords(rr, recordNames)).toEqual(['record1']);
205205
});
@@ -210,8 +210,8 @@ export function main() {
210210
rr.addRecord(record3);
211211
rr.addRecord(record4);
212212

213-
rr.disableRecord(record2);
214-
rr.disableRecord(record3);
213+
record2.disable();
214+
record3.disable();
215215

216216
expect(record2.disabled).toBeTruthy();
217217
expect(record3.disabled).toBeTruthy();
@@ -224,11 +224,11 @@ export function main() {
224224
rr.addRecord(record2);
225225
rr.addRecord(record3);
226226
rr.addRecord(record4);
227-
rr.disableRecord(record2);
228-
rr.disableRecord(record3);
227+
record2.disable();
228+
record3.disable();
229229

230-
rr.enableRecord(record2);
231-
rr.enableRecord(record3);
230+
record2.enable();
231+
record3.enable();
232232

233233
expect(enabledRecords(rr, recordNames)).toEqual(['record1', 'record2', 'record3', 'record4']);
234234
});
@@ -247,11 +247,11 @@ export function main() {
247247
rr.addRange(rr2);
248248
rr.addRange(rr3);
249249

250-
rr2.disableRecord(record2);
250+
record2.disable();
251251

252252
expect(enabledRecords(rr, recordNames)).toEqual(['record1', 'record3']);
253253

254-
rr2.enableRecord(record2);
254+
record2.enable();
255255

256256
expect(enabledRecords(rr, recordNames)).toEqual(['record1', 'record2', 'record3']);
257257
});

0 commit comments

Comments
 (0)