1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5/** 6 * @fileoverview Stubs for Chrome extension APIs that aren't available to 7 * regular web pages, to allow tests to run. 8 */ 9 10chrome = chrome || {}; 11chrome.extension = chrome.extension || {}; 12chrome.contentSettings = chrome.contentSettings || {}; 13 14var _rules = {}; 15chrome.contentSettings.plugins = { 16 'set': function(details, callback) { 17 assertObjectEquals({'id': 'myplugin'}, details.resourceIdentifier); 18 var pattern = details.primaryPattern; 19 var setting = details.setting; 20 if (pattern == '__invalid_pattern') { 21 chrome.runtime.lastError = {'message': 'Invalid pattern'}; 22 } else if (setting == '__invalid_setting') { 23 throw Error('Invalid setting'); 24 } else { 25 chrome.runtime.lastError = undefined; 26 _rules[pattern] = setting; 27 } 28 callback(); 29 }, 30 31 'clear': function(details, callback) { 32 assertObjectEquals({}, details); 33 _rules = {}; 34 callback(); 35 } 36}; 37 38chrome.i18n = chrome.i18n || {}; 39chrome.i18n.getMessage = function(id) { 40 var messages = { 41 'patternColumnHeader': 'Hostname Pattern', 42 'settingColumnHeader': 'Behavior', 43 'allowRule': 'Allow', 44 'blockRule': 'Block', 45 'addNewPattern': 'Add a new hostname pattern', 46 }; 47 return messages[id]; 48} 49 50/** 51 * Creates a new Settings object with a set of rules for a dummy plug-in. 52 * Because we provide stub implementations for the Chrome contentSettings 53 * extension API, we know that the methods will execute immediately instead of 54 * asynchronously. 55 * @param {!Object} rules A map from content settings pattern to setting. 56 * @return {!pluginSettings.Settings} A newly created Settings object with the 57 * passed in set of rules. 58 */ 59function createSettings(rules) { 60 var settings = new pluginSettings.Settings('myplugin'); 61 if (rules) { 62 for (var pattern in rules) { 63 settings.set(pattern, rules[pattern], function() {}); 64 } 65 } 66 return settings; 67} 68 69