// 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 _buckets = []; 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 get rootBucket { rootBucketAccessed++; return _rootBucket; } late Future _rootBucket; set rootBucket(Future value) { _rootBucket = value; _isRestoring = true; ServicesBinding.instance.addPostFrameCallback((Duration _) { _isRestoring = false; }); notifyListeners(); } @override bool get isReplacing => _isRestoring; bool _isRestoring = false; @override Future sendToEngine(Uint8List encodedData) { throw UnimplementedError('unimplemented in mock'); } @override String toString() => 'MockManager'; } const String childrenMapKey = 'c'; const String valuesMapKey = 'v';