| /* |
| * Copyright (c) 2014, 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. |
| */ |
| /** |
| * @assertion |
| * @description This tests that storage methods throw exceptions with reasonable messages inside 'data:' URLs. |
| */ |
| import "dart:html"; |
| import "../../../Utils/async_utils.dart"; |
| import "../../../Utils/expect.dart"; |
| import "../../testharness.dart"; |
| |
| const String htmlEL2 = r''' |
| <iframe src="data:text/html,<script>try { window.localStorage; } catch(e) { window.top.postMessage(e.message, '*'); }; try { window.sessionStorage; } catch(e) { window.top.postMessage(e.message, '*'); }</script>"></iframe> |
| '''; |
| |
| void main() { |
| document.body.appendHtml(htmlEL2, treeSanitizer: new NullTreeSanitizer()); |
| |
| var errorsSeen = 0; |
| var exceptionMessage; |
| asyncStart(); |
| window.addEventListener('message', (e) { |
| errorsSeen++; |
| exceptionMessage = e.data; |
| // print("exceptionMessage=$exceptionMessage;"); |
| if (errorsSeen == 1) { |
| Expect.equals("Failed to read the 'localStorage' property from 'Window': Storage is disabled inside 'data:' URLs.", exceptionMessage); |
| } else { |
| Expect.equals("Failed to read the 'sessionStorage' property from 'Window': Storage is disabled inside 'data:' URLs.", exceptionMessage); |
| asyncEnd(); |
| } |
| }); |
| } |