Files
sdk/tests/lib/html/cross_frame_test.dart
Lasse R.H. Nielsen f8086c81ae Collect all test-related files in package:expect.
Collects files from `package:async_helper` and `tests/language`
that are generally useful, so that all test-related helpers are
in `package:expect`.

Moves the two libraries from `package:async_helper` into `package:expect`,
and the `tests/language/static_type_helper.dart` file too.

Deprecates `async_minitest.dart`, to follow `minitest.dart`,
expecting the Flutter use of it to have been fixed to not break
on deprecation (I believe Flutter no longer breaks builds on deprecations at all).

Patch 1 is the actual change.
Patch 2+4+8 is changing all existing references to the files.
Patch 6 ignores deprecation in files still using `async_minitest.dart`.

3+5+7+9 are updating this text to make the numbers match.
Then it's just test-expectations and small tweaks from there.

Change-Id: I1b665135b5fef9b9a0c3b340ffe9daf874d0174c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/373120
Reviewed-by: Nate Bosch <nbosch@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Lasse Nielsen <lrn@google.com>
2024-10-11 16:53:52 +00:00

76 lines
2.6 KiB
Dart

// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:html';
import 'package:expect/legacy/minitest.dart'; // ignore: deprecated_member_use_from_same_package
main() {
var isWindowBase = predicate((x) => x is WindowBase, 'is a WindowBase');
var isWindow = predicate((x) => x is Window, 'is a Window');
var isLocationBase = predicate((x) => x is LocationBase, 'is a LocationBase');
var isLocation = predicate((x) => x is Location, 'is a Location');
var isHistoryBase = predicate((x) => x is HistoryBase, 'is a HistoryBase');
var isHistory = predicate((x) => x is History, 'is a History');
final dynamic iframe = new IFrameElement();
document.body!.append(iframe);
test('window', () {
expect(window, isWindow);
expect(window.document, document);
});
test('iframe', () {
final frameWindow = iframe.contentWindow;
expect(frameWindow, isWindowBase);
//TODO(gram) The next test should be written as:
// expect(frameWindow, isNot(isWindow));
// but that will cause problems now until is/is! work
// properly in dart2js instead of always returning true.
expect(frameWindow is! Window, isTrue);
expect(frameWindow.parent, isWindow);
// Ensure that the frame's document is inaccessible via window.
expect(() => frameWindow.document, throws);
});
test('contentDocument', () {
// Ensure that the frame's document is inaccessible.
expect(() => iframe.contentDocument, throws);
});
test('location', () {
expect(window.location, isLocation);
final frameLocation = iframe.contentWindow.location;
expect(frameLocation, isLocationBase);
// TODO(gram) Similar to the above, the next test should be:
// expect(frameLocation, isNot(isLocation));
expect(frameLocation is! Location, isTrue);
expect(() => frameLocation.href, throws);
expect(() => frameLocation.hash, throws);
final frameParentLocation = iframe.contentWindow.parent.location;
expect(frameParentLocation, isLocation);
});
test('history', () {
expect(window.history, isHistory);
final frameHistory = iframe.contentWindow.history;
expect(frameHistory, isHistoryBase);
// See earlier comments.
//expect(frameHistory, isNot(isHistory));
expect(frameHistory is! History, isTrue);
// Valid methods.
frameHistory.forward();
expect(() => frameHistory.length, throws);
final frameParentHistory = iframe.contentWindow.parent.history;
expect(frameParentHistory, isHistory);
});
}