| Index: chrome/test/data/extensions/platform_apps/web_view/autosize/main.js
|
| diff --git a/chrome/test/data/extensions/platform_apps/web_view/autosize/main.js b/chrome/test/data/extensions/platform_apps/web_view/autosize/main.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..017d7414059c0da7468c7a4187ec0788b94b514c
|
| --- /dev/null
|
| +++ b/chrome/test/data/extensions/platform_apps/web_view/autosize/main.js
|
| @@ -0,0 +1,63 @@
|
| +// Copyright 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +function testAutoSize() {
|
| + var webview = document.querySelector('webview');
|
| +
|
| + var minw = 1600;
|
| + var maxw = 3000;
|
| + var minh = 1600;
|
| + var maxh = 3000;
|
| +
|
| + webview.addEventListener('loadstop', function(e) {
|
| + window.console.log('guest.loadstop');
|
| + // Note that we set the autosize attribute first to check incorrect
|
| + // damage buffer allocation.
|
| + //
|
| + // Consider a case where:
|
| + // Initially, <webview>.width = 300 (default width).
|
| + // Then we set
|
| + // <webview>.autosize = true
|
| + // And then we set
|
| + // <webview>.minwidth = 200
|
| + // and
|
| + // <webview>.maxwidth = 800
|
| + // If the autosize logic decided to set the width to 400 (something > 300),
|
| + // then we won't have enough memory in damage buffer to render.
|
| + // When tried manually, this would cause garbage to be rendered (around the
|
| + // bottom portion of plugin). In test we set the value to high so increase
|
| + // the chance of invalid memory access.
|
| + webview.autosize = true;
|
| +
|
| + // Ask for a larger size so we can expose memory access bug.
|
| + webview.maxwidth = maxw;
|
| + webview.maxheight = maxh;
|
| + webview.minwidth = minw;
|
| + webview.minheight = minh;
|
| + });
|
| +
|
| + webview.addEventListener('sizechanged', function(e) {
|
| + window.console.log('sizechagned: dimension: ' + e.newWidth + ' X ' +
|
| + e.newHeight);
|
| + chrome.test.assertTrue(e.newWidth >= minw);
|
| + chrome.test.assertTrue(e.newWidth <= maxw);
|
| + chrome.test.assertTrue(e.newHeight >= minh);
|
| + chrome.test.assertTrue(e.newHeight <= maxh);
|
| +
|
| + chrome.test.succeed();
|
| + });
|
| +
|
| + var longString = 'a b c d e f g h i j k l m o p q r s t u v w x y z';
|
| + for (var i = 0; i < 4; ++i) {
|
| + longString += longString;
|
| + }
|
| + webview.setAttribute('src',
|
| + 'data:text/html,<body bgcolor="red">' +
|
| + '<div style="width: 400px; height: 200px;">' + longString + '</div>' +
|
| + longString + '</body>');
|
| +}
|
| +
|
| +onload = function() {
|
| + chrome.test.runTests([testAutoSize]);
|
| +};
|
|
|