blob: 02dc1d3a055cbd282df09d8d28ea100890b4be6e [file] [log] [blame]
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
class MockRestorationManager extends TestRestorationManager {
MockRestorationManager({ this.enableChannels = false });
bool get updateScheduled => _updateScheduled;
bool _updateScheduled = false;
final List<RestorationBucket> _buckets = <RestorationBucket>[];
final bool enableChannels;
@override
void initChannels() {
if (enableChannels) {
super.initChannels();
}
}
@override
void scheduleSerializationFor(RestorationBucket bucket) {
_updateScheduled = true;
_buckets.add(bucket);
}
@override
bool unscheduleSerializationFor(RestorationBucket bucket) {
_updateScheduled = true;
return _buckets.remove(bucket);
}
void doSerialization() {
_updateScheduled = false;
for (final RestorationBucket bucket in _buckets) {
bucket.finalize();
}
_buckets.clear();
}
@override
void restoreFrom(TestRestorationData data) {
// Ignore in mock.
}
int rootBucketAccessed = 0;
@override
Future<RestorationBucket?> get rootBucket {
rootBucketAccessed++;
return _rootBucket;
}
late Future<RestorationBucket?> _rootBucket;
set rootBucket(Future<RestorationBucket?> value) {
_rootBucket = value;
_isRestoring = true;
ServicesBinding.instance.addPostFrameCallback((Duration _) {
_isRestoring = false;
});
notifyListeners();
}
@override
bool get isReplacing => _isRestoring;
bool _isRestoring = false;
@override
Future<void> sendToEngine(Uint8List encodedData) {
throw UnimplementedError('unimplemented in mock');
}
@override
String toString() => 'MockManager';
}
const String childrenMapKey = 'c';
const String valuesMapKey = 'v';