11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivar embedder = {}; 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// TODO(lfg) Move these functions to a common js. 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciwindow.runTest = function(testName) { 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!embedder.test.testList[testName]) { 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci window.console.warn('Incorrect testName: ' + testName); 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.fail(); 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return; 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Run the test. 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.testList[testName](); 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciembedder.test = {}; 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciembedder.test.assertEq = function(a, b) { 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (a != b) { 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci window.console.warn('assertion failed: ' + a + ' != ' + b); 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.fail(); 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciembedder.test.assertFalse = function(condition) { 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (condition) { 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci window.console.warn('assertion failed: false != ' + condition); 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.fail(); 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciembedder.test.assertTrue = function(condition) { 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!condition) { 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci window.console.warn('assertion failed: true != ' + condition); 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.fail(); 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciembedder.test.fail = function() { 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chrome.test.sendMessage('TEST_FAILED'); 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciembedder.test.succeed = function() { 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chrome.test.sendMessage('TEST_PASSED'); 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Tests begin. 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// This test verifies that the allowtransparency property cannot be changed 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// once set. The attribute can only be deleted. 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction testAllowTransparencyAttribute() { 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var webview = document.createElement('webview'); 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.src = 'data:text/html,webview test'; 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.allowtransparency = true; 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.addEventListener('loadstop', function(e) { 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertTrue(webview.hasAttribute('allowtransparency')); 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.allowtransparency = false; 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertTrue(webview.allowtransparency); 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertTrue(webview.hasAttribute('allowtransparency')); 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.removeAttribute('allowtransparency'); 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertFalse(webview.allowtransparency); 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.succeed(); 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }); 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci document.body.appendChild(webview); 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction testAPIMethodExistence() { 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var apiMethodsToCheck = [ 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'back', 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'find', 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'forward', 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'canGoBack', 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'canGoForward', 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'clearData', 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'getProcessId', 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'getZoom', 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'go', 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'print', 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'reload', 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'setZoom', 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'stop', 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'stopFinding', 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'terminate', 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'executeScript', 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'insertCSS', 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'getUserAgent', 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'isUserAgentOverridden', 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'setUserAgentOverride' 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ]; 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var webview = document.createElement('webview'); 971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('partition', arguments.callee.name); 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.addEventListener('loadstop', function(e) { 991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for (var i = 0; i < apiMethodsToCheck.length; ++i) { 1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertEq('function', 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci typeof webview[apiMethodsToCheck[i]]); 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Check contentWindow. 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertEq('object', typeof webview.contentWindow); 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertEq('function', 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci typeof webview.contentWindow.postMessage); 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.succeed(); 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }); 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('src', 'data:text/html,webview check api'); 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci document.body.appendChild(webview); 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Makes sure 'sizechanged' event is fired only if autosize attribute is 1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// specified. 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// After loading <webview> without autosize attribute and a size, say size1, 1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// we set autosize attribute and new min size with size2. We would get (only 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// one) sizechanged event with size1 as old size and size2 as new size. 1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction testAutosizeAfterNavigation() { 1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var webview = document.createElement('webview'); 1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var step = 1; 1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var sizeChangeHandler = function(e) { 1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (step) { 1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case 1: 1261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // This would be triggered after we set autosize attribute. 1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertEq(50, e.oldWidth); 1281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertEq(100, e.oldHeight); 1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertTrue(e.newWidth >= 60 && e.newWidth <= 70); 1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertTrue(e.newHeight >= 110 && e.newHeight <= 120); 1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Remove autosize attribute and expect webview to return to its 1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // original size. 1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.removeAttribute('autosize'); 1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case 2: 1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Expect 50x100. 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertEq(50, e.newWidth); 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertEq(100, e.newHeight); 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.succeed(); 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci default: 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci window.console.log('Unexpected sizechanged event, step = ' + step); 1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.fail(); 1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ++step; 1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }; 1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.addEventListener('sizechanged', sizeChangeHandler); 1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.addEventListener('loadstop', function(e) { 1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('autosize', true); 1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('minwidth', 60); 1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('maxwidth', 70); 1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('minheight', 110); 1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('maxheight', 120); 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }); 1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.style.width = '50px'; 1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.style.height = '100px'; 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('src', 'data:text/html,webview test sizechanged event'); 1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci document.body.appendChild(webview); 1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// This test verifies that if a browser plugin is in autosize mode before 1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// navigation then the guest starts auto-sized. 1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction testAutosizeBeforeNavigation() { 1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var webview = document.createElement('webview'); 1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('autosize', 'true'); 1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('minwidth', 200); 1751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('maxwidth', 210); 1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('minheight', 100); 1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('maxheight', 110); 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.addEventListener('sizechanged', function(e) { 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertTrue(e.newWidth >= 200 && e.newWidth <= 210); 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertTrue(e.newHeight >= 100 && e.newHeight <= 110); 1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.succeed(); 1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }); 1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('src', 'data:text/html,webview test sizechanged event'); 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci document.body.appendChild(webview); 1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// This test verifies that a lengthy page with autosize enabled will report 1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// the correct height in the sizechanged event. 1911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction testAutosizeHeight() { 1921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var webview = document.createElement('webview'); 1931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.autosize = true; 1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.minwidth = 200; 1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.maxwidth = 210; 1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.minheight = 40; 1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.maxheight = 200; 1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var step = 1; 2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.addEventListener('sizechanged', function(e) { 2021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (step) { 2031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case 1: 2041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertEq(200, e.newHeight); 2051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Change the maxheight to verify that we see the change. 2061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.maxheight = 50; 2071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 2081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case 2: 2091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertEq(200, e.oldHeight); 2101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertEq(50, e.newHeight); 2111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.succeed(); 2121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 2131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci default: 2141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci window.console.log('Unexpected sizechanged event, step = ' + step); 2151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.fail(); 2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ++step; 2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }); 2201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.src = 'data:text/html,' + 2221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'a<br/>b<br/>c<br/>d<br/>e<br/>f<br/>' + 2231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'a<br/>b<br/>c<br/>d<br/>e<br/>f<br/>' + 2241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'a<br/>b<br/>c<br/>d<br/>e<br/>f<br/>' + 2251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'a<br/>b<br/>c<br/>d<br/>e<br/>f<br/>' + 2261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'a<br/>b<br/>c<br/>d<br/>e<br/>f<br/>'; 2271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci document.body.appendChild(webview); 2281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// This test verifies that all autosize attributes can be removed 2311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// without crashing the plugin, or throwing errors. 2321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction testAutosizeRemoveAttributes() { 2331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var webview = document.createElement('webview'); 2341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var step = 1; 2361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var sizeChangeHandler = function(e) { 2371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (step) { 2381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case 1: 2391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // This is the sizechanged event for autosize. 2401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Remove attributes. 2421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.removeAttribute('minwidth'); 2431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.removeAttribute('maxwidth'); 2441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.removeAttribute('minheight'); 2451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.removeAttribute('maxheight'); 2461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.removeAttribute('autosize'); 2471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // We'd get one more sizechanged event after we turn off 2491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // autosize. 2501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.style.width = '500px'; 2511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.style.height = '500px'; 2521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 2531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case 2: 2541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.succeed(); 2551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 2561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ++step; 2591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }; 2601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.addEventListener('loadstop', function(e) { 2621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.minwidth = 300; 2631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.maxwidth = 700; 2641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.minheight = 600; 2651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.maxheight = 400; 2661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.autosize = true; 2671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }); 2681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.addEventListener('sizechanged', sizeChangeHandler); 2701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.style.width = '640px'; 2721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.style.height = '480px'; 2731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('src', 'data:text/html,webview check autosize'); 2741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci document.body.appendChild(webview); 2751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// This test verifies that autosize works when some of the parameters are unset. 2781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifunction testAutosizeWithPartialAttributes() { 2791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci window.console.log('testAutosizeWithPartialAttributes'); 2801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var webview = document.createElement('webview'); 2811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var step = 1; 2831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var sizeChangeHandler = function(e) { 2841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci window.console.log('sizeChangeHandler, new: ' + 2851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci e.newWidth + ' X ' + e.newHeight); 2861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci switch (step) { 2871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case 1: 2881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Expect 300x200. 2891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertEq(300, e.newWidth); 2901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertEq(200, e.newHeight); 2911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Change the min size to cause a relayout. 2931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.minwidth = 500; 2941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 2951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case 2: 2961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertTrue(e.newWidth >= webview.minwidth); 2971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertTrue(e.newWidth <= webview.maxwidth); 2981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Tests when minwidth > maxwidth, minwidth = maxwidth. 3001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // i.e. minwidth is essentially 700. 3011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.minwidth = 800; 3021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 3031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci case 3: 3041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Expect 700X? 3051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertEq(700, e.newWidth); 3061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertTrue(e.newHeight >= 200); 3071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.assertTrue(e.newHeight <= 600); 3081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.succeed(); 3101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 3111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci default: 3121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci window.console.log('Unexpected sizechanged event, step = ' + step); 3131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder.test.fail(); 3141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci break; 3151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 3161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ++step; 3181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }; 3191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.addEventListener('sizechanged', sizeChangeHandler); 3211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.addEventListener('loadstop', function(e) { 3231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.minwidth = 300; 3241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.maxwidth = 700; 3251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.minheight = 200; 3261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.maxheight = 600; 3271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.autosize = true; 3281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }); 3291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.style.width = '640px'; 3311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.style.height = '480px'; 3321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci webview.setAttribute('src', 'data:text/html,webview check autosize'); 3331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci document.body.appendChild(webview); 3341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 3351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Tests end. 3381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciembedder.test.testList = { 3401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'testAllowTransparencyAttribute': testAllowTransparencyAttribute, 3411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'testAPIMethodExistence': testAPIMethodExistence, 3421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'testAutosizeAfterNavigation': testAutosizeAfterNavigation, 3431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'testAutosizeBeforeNavigation': testAutosizeBeforeNavigation, 3441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'testAutosizeHeight': testAutosizeHeight, 3451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'testAutosizeRemoveAttributes': testAutosizeRemoveAttributes, 3461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'testAutosizeWithPartialAttributes': testAutosizeWithPartialAttributes 3471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 3481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccionload = function() { 3501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chrome.test.sendMessage('LAUNCHED'); 3511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 352