1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
// 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.
/**
* @type {number}
* @const
*/
var FEEDBACK_WIDTH = 500;
/**
* @type {number}
* @const
*/
var FEEDBACK_HEIGHT = 585;
var initialFeedbackInfo = null;
var whitelistedExtensionIds = [
'bpmcpldpdmajfigpchkicefoigmkfalc', // QuickOffice
'ehibbfinohgbchlgdbfpikodjaojhccn', // QuickOffice
'gbkeegbaiigmenfmjfclcdgdpimamgkj', // QuickOffice
'efjnaogkjbogokcnohkmnjdojkikgobo', // G+ Photos
'ebpbnabdhheoknfklmpddcdijjkmklkp', // G+ Photos
'endkpmfloggdajndjpoekmkjnkolfdbf', // Feedback Extension
'mlocfejafidcakdddnndjdngfmncfbeg', // Connectivity Diagnostics
'ganomidahfnpdchomfgdoppjmmedlhia', // Connectivity Diagnostics
'eemlkeanncmjljgehlbplemhmdmalhdc', // Connectivity Diagnostics
'kodldpbjkkmmnilagfdheibampofhaom', // Connectivity Diagnostics
'kkebgepbbgbcmghedmmdfcbdcodlkngh', // Chrome OS Recovery Tool
'jndclpdbaamdhonoechobihbbiimdgai', // Chrome OS Recovery Tool
'ljoammodoonkhnehlncldjelhidljdpi', // GetHelp app.
'ljacajndfccfgnfohlgkdphmbnpkjflk', // Chrome Remote Desktop Dev
'gbchcmhmhahfdphkhkmpfmihenigjmpp', // Chrome Remote Desktop Stable
'odkaodonbgfohohmklejpjiejmcipmib', // Chrome Remote Desktop QA
'dokpleeekgeeiehdhmdkeimnkmoifgdd', // Chrome Remote Desktop QA backup
'ajoainacpilcemgiakehflpbkbfipojk', // Chrome Remote Desktop Apps V2
'llohocloplkbhgcfnplnoficdkiechcn', // Play Movies Dev
'icljpnebmoleodmchaaajbkpoipfoahp', // Play Movies Nightly
'mjekoljodoiapgkggnlmbecndfpbbcch', // Play Movies Beta
'gdijeikdkaembjbdobgfkoidjkpbmlkd', // Play Movies Stable
'andfmajejfpjojledngpdaibbhkffipo', // Hangouts Extension
'jfjjdfefebklmdbmenmlehlopoocnoeh', // Hangouts Extension
'dhcmpocobclokhifdkgcjbnfdaneoojd', // Hangouts Extension
'ppleadejekpmccmnpjdimmlfljlkdfej', // Hangouts Extension
'eggnbpckecmjlblplehfpjjdhhidfdoj', // Hangouts Extension
'ljclpkphhpbpinifbeabbhlfddcpfdde', // Hangouts Extension
'nckgahadagoaajjgafhacjanaoiihapd', // Hangouts Extension
'knipolnnllmklapflnccelgolnpehhpl', // Hangouts Extension
'dogkdgiahcdchbabhdmpbhlfoddjined', // GLS nightly
'khkjfddibboofomnlkndfedpoccieiee', // GLS stable
];
/**
* Function to determine whether or not a given extension id is whitelisted to
* invoke the feedback UI.
* @param {string} id the id of the sender extension.
* @return {boolean} Whether or not this sender is whitelisted.
*/
function senderWhitelisted(id) {
return id && whitelistedExtensionIds.indexOf(id) != -1;
}
/**
* Callback which gets notified once our feedback UI has loaded and is ready to
* receive its initial feedback info object.
* @param {Object} request The message request object.
* @param {Object} sender The sender of the message.
* @param {function(Object)} sendResponse Callback for sending a response.
*/
function feedbackReadyHandler(request, sender, sendResponse) {
if (request.ready) {
chrome.runtime.sendMessage(
{sentFromEventPage: true, data: initialFeedbackInfo});
}
}
/**
* Callback which gets notified if another extension is requesting feedback.
* @param {Object} request The message request object.
* @param {Object} sender The sender of the message.
* @param {function(Object)} sendResponse Callback for sending a response.
*/
function requestFeedbackHandler(request, sender, sendResponse) {
if (request.requestFeedback && senderWhitelisted(sender.id))
startFeedbackUI(request.feedbackInfo);
}
/**
* Callback which starts up the feedback UI.
* @param {Object} feedbackInfo Object containing any initial feedback info.
*/
function startFeedbackUI(feedbackInfo) {
initialFeedbackInfo = feedbackInfo;
chrome.app.window.create('html/default.html', {
frame: 'none',
id: 'default_window',
width: FEEDBACK_WIDTH,
height: FEEDBACK_HEIGHT,
hidden: true,
resizable: false },
function(appWindow) {});
}
chrome.runtime.onMessage.addListener(feedbackReadyHandler);
chrome.runtime.onMessageExternal.addListener(requestFeedbackHandler);
chrome.feedbackPrivate.onFeedbackRequested.addListener(startFeedbackUI);
|