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