// 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. /** * @fileoverview Tests the local NTP. */ /** * Shortcut for document.getElementById. * @param {string} id of the element. * @return {HTMLElement} with the id. */ function $(id) { return document.getElementById(id); } /** * Sets up for the next test case. Recreates the default local NTP DOM. */ function setUp() { document.body.innerHTML = ''; document.body.appendChild($('local-ntp-body').content.cloneNode(true)); } /** * Cleans up after test execution. */ function tearDown() { } /** * Aborts a test if a condition is not met. * @param {boolean} condition The condition that must be true. * @param {string=} opt_message A message to log if the condition is not met. */ function assert(condition, opt_message) { if (!condition) throw new Error(opt_message || 'Assertion failed'); } /** * Runs all tests. * @return {boolean} True if all tests pass and false otherwise. */ function runTests() { var pass = true; for (var testName in window) { if (/^test.+/.test(testName) && typeof window[testName] == 'function') { try { setUp(); window[testName].call(window); tearDown(); } catch (err) { window.console.log(testName + ' ' + err); pass = false; } } } return pass; } /** * Tests that Google NTPs show a fakebox and logo. */ function testShowsFakeboxAndLogoIfGoogle() { var localNTP = LocalNTP(); configData.isGooglePage = true; localNTP.init(); assert($('fakebox')); assert($('logo')); } /** * Tests that non-Google NTPs do not show a fakebox. */ function testDoesNotShowFakeboxIfNotGoogle() { var localNTP = LocalNTP(); configData.isGooglePage = false; localNTP.init(); assert(!$('fakebox')); assert(!$('logo')); } /** * Tests that clicking on a Most Visited link calls navigateContentWindow. */ function testMostVisitedLinkCallsNavigateContentWindow() { var ntpHandle = chrome.embeddedSearch.newTabPage; var originalNavigateContentWindow = ntpHandle.navigateContentWindow; var navigateContentWindowCalls = 0; ntpHandle.navigateContentWindow = function() { navigateContentWindowCalls++; } // Most Visited links have an rid (restricted id). var params = { 'rid' : 1 }; var href = 'file:///some/local/file'; var title = 'Title'; var text = 'text'; var provider = 'foobar'; var link = createMostVisitedLink(params, href, title, text, provider); link.click(); ntpHandle.navigateContentWindow = originalNavigateContentWindow; assert(navigateContentWindowCalls > 0); } /** * Tests that clicking on a Most Likely link does not call * navigateContentWindow (it's a regular link). */ function testMostLikelyLinkDoesNotCallNavigateContentWindow() { var ntpHandle = chrome.embeddedSearch.newTabPage; var originalNavigateContentWindow = ntpHandle.navigateContentWindow; var navigateContentWindowCalls = 0; ntpHandle.navigateContentWindow = function() { navigateContentWindowCalls++; } var params = {}; var href = 'https://www.site.com'; var title = 'Title'; var text = 'text'; var provider = 'foobar'; var link = createMostVisitedLink(params, href, title, text, provider); link.click(); ntpHandle.navigateContentWindow = originalNavigateContentWindow; assert(navigateContentWindowCalls == 0); }