mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 12:48:10 +00:00
4283c3e41e
R=sigmund@google.com Review URL: https://codereview.chromium.org//231413003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34890 260f80e4-7a28-3924-810f-c04153c831b5
76 lines
2.5 KiB
Dart
76 lines
2.5 KiB
Dart
library CrossFrameTest;
|
|
import 'package:unittest/unittest.dart';
|
|
import 'package:unittest/html_config.dart';
|
|
import 'dart:html';
|
|
|
|
main() {
|
|
useHtmlConfiguration();
|
|
|
|
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 iframe = new Element.tag('iframe');
|
|
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);
|
|
});
|
|
}
|