/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* Copyright 2013 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* globals chrome */ 'use strict'; var ChromeCom = (function ChromeComClosure() { return { /** * Creates an event that the extension is listening for and will * asynchronously respond by calling the callback. * @param {String} action The action to trigger. * @param {String} data Optional data to send. * @param {Function} callback Optional response callback that will be called * with one data argument. When the request cannot be handled, the callback * is immediately invoked with no arguments. */ request: function(action, data, callback) { var message = { action: action, data: data }; if (!chrome.runtime) { console.error('chrome.runtime is undefined.'); if (callback) callback(); } else if (callback) { chrome.runtime.sendMessage(message, callback); } else { chrome.runtime.sendMessage(message); } } }; })();