1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)'use strict';
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Namespace object for the utilities.
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)var ActionChoiceUtil = {};
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)/**
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Gets list of defined actions.
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @param {Object} loadTimeData Load time data for i18n.
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @param {function(Array.<Object>)} callback Callback with list of defined
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) *     actions.
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ActionChoiceUtil.getDefinedActions = function(loadTimeData, callback) {
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Fill out predefined actions first.
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  var result = [{
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    id: 'view-files',
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    title: loadTimeData.getString('ACTION_CHOICE_VIEW_FILES'),
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    class: 'view-files-icon'
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }, {
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    id: 'import-photos-to-drive',
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    title: loadTimeData.getString('ACTION_CHOICE_PHOTOS_DRIVE'),
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    class: 'import-photos-to-drive-icon',
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    disabled: true,
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    disabledTitle: loadTimeData.getString('ACTION_CHOICE_DRIVE_NOT_REACHED')
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }, {
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    id: 'watch-single-video',
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    class: 'watch-single-video-icon',
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    hidden: true,
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    disabled: true
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }];
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  chrome.mediaGalleriesPrivate.getHandlers(function(handlers) {
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    for (var i = 0; i < handlers.length; i++) {
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      var action = {
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        id: handlers[i].extensionId + ':' + handlers[i].id,
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        title: handlers[i].title,
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        // TODO(mtomasz): Get the passed icon instead of the extension icon.
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        icon100:
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            'chrome://extension-icon/' + handlers[i].extensionId + '/32/1',
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        icon200:
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            'chrome://extension-icon/' + handlers[i].extensionId + '/64/1',
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        extensionId: handlers[i].extensionId,
45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        actionId: handlers[i].id
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      };
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      result.push(action);
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    }
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    callback(result);
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }.bind(this));
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)/**
54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Gets the remembered action's identifier.
55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @param {function(string=)} callback Callback with the identifier.
56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */
57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ActionChoiceUtil.getRememberedActionId = function(callback) {
587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  chrome.storage.local.get(['action-choice'], function(result) {
59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    callback(result['action-choice']);
60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  });
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)/**
64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Sets the remembered action's identifier.
65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @param {string=} opt_actionId Action's identifier. If undefined, then forgets
66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) *     the remembered choice.
67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */
68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ActionChoiceUtil.setRememberedActionId = function(opt_actionId) {
697d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  chrome.storage.local.set({'action-choice': opt_actionId});
70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
71