| Index: ui/file_manager/file_manager/foreground/js/ui/suggest_apps_dialog.js
|
| diff --git a/ui/file_manager/file_manager/foreground/js/ui/suggest_apps_dialog.js b/ui/file_manager/file_manager/foreground/js/ui/suggest_apps_dialog.js
|
| index 2c7c38c50ee7a4f78c980b8c072ff69da8d60191..bd356a0ecaf67397b8f5410fd1428244c79114b4 100644
|
| --- a/ui/file_manager/file_manager/foreground/js/ui/suggest_apps_dialog.js
|
| +++ b/ui/file_manager/file_manager/foreground/js/ui/suggest_apps_dialog.js
|
| @@ -21,12 +21,13 @@ var WEBVIEW_WIDTH = 735;
|
| var WEBVIEW_HEIGHT = 480;
|
|
|
| /**
|
| - * The URL of the widget.
|
| + * The URL of the widget showing suggested apps.
|
| * @type {string}
|
| * @const
|
| */
|
| var CWS_WIDGET_URL =
|
| 'https://clients5.google.com/webstore/wall/cros-widget-container';
|
| +
|
| /**
|
| * The origin of the widget.
|
| * @type {string}
|
| @@ -62,6 +63,7 @@ function SuggestAppsDialog(parentNode, state) {
|
| this.frame_.appendChild(this.buttons_);
|
|
|
| this.webstoreButton_ = this.document_.createElement('div');
|
| + this.webstoreButton_.hidden = true;
|
| this.webstoreButton_.id = 'webstore-button';
|
| this.webstoreButton_.innerHTML = str('SUGGEST_DIALOG_LINK_TO_WEBSTORE');
|
| this.webstoreButton_.addEventListener(
|
| @@ -72,13 +74,11 @@ function SuggestAppsDialog(parentNode, state) {
|
|
|
| this.webview_ = null;
|
| this.accessToken_ = null;
|
| - this.widgetUrl_ =
|
| - state.overrideCwsContainerUrlForTest || CWS_WIDGET_URL;
|
| - this.widgetOrigin_ =
|
| - state.overrideCwsContainerOriginForTest || CWS_WIDGET_ORIGIN;
|
| + this.widgetUrl_ = state.overrideCwsContainerUrlForTest || CWS_WIDGET_URL;
|
| + this.widgetOrigin_ = state.overrideCwsContainerOriginForTest ||
|
| + CWS_WIDGET_ORIGIN;
|
|
|
| - this.extension_ = null;
|
| - this.mime_ = null;
|
| + this.options_ = null;
|
| this.installingItemId_ = null;
|
| this.state_ = SuggestAppsDialog.State.UNINITIALIZED;
|
|
|
| @@ -176,7 +176,7 @@ SuggestAppsDialog.prototype.show = function() {
|
| /**
|
| * Shows suggest-apps dialog by file extension and mime.
|
| *
|
| - * @param {string} extension Extension of the file.
|
| + * @param {string} extension Extension of the file with a trailing dot.
|
| * @param {string} mime Mime of the file.
|
| * @param {function(boolean)} onDialogClosed Called when the dialog is closed.
|
| * The argument is the result of installation: true if an app is installed,
|
| @@ -184,32 +184,58 @@ SuggestAppsDialog.prototype.show = function() {
|
| */
|
| SuggestAppsDialog.prototype.showByExtensionAndMime =
|
| function(extension, mime, onDialogClosed) {
|
| - this.text_.hidden = true;
|
| - this.dialogText_ = '';
|
| - this.showInternal_(null, extension, mime, onDialogClosed);
|
| + assert(extension && extension[0] === '.');
|
| + this.showInternal_(
|
| + {
|
| + file_extension: extension.substr(1),
|
| + mime_type: mime
|
| + },
|
| + str('SUGGEST_DIALOG_TITLE'),
|
| + FileTasks.createWebStoreLink(extension, mime),
|
| + onDialogClosed);
|
| +};
|
| +
|
| +/**
|
| + * Shows suggest-apps dialog for FSP API
|
| + * @param {function(boolean)} onDialogClosed Called when the dialog is closed.
|
| + * The argument is the result of installation: true if an app is installed,
|
| + * false otherwise.
|
| + */
|
| +SuggestAppsDialog.prototype.showProviders = function(onDialogClosed) {
|
| + this.showInternal_(
|
| + {
|
| + file_system_provider: true
|
| + },
|
| + str('SUGGEST_DIALOG_FOR_PROVIDERS_TITLE'),
|
| + null /* webStoreUrl */,
|
| + onDialogClosed);
|
| };
|
|
|
| /**
|
| * Internal method to show a dialog. This should be called only from 'Suggest.
|
| * appDialog.showXxxx()' functions.
|
| *
|
| - * @param {?string} filename Filename (without extension) of the file.
|
| - * @param {?string} extension Extension of the file.
|
| - * @param {?string} mime Mime of the file.
|
| + * @param {!Object<string, *>} options Map of options for the dialog.
|
| + * @param {string} title Title of the dialog.
|
| + * @param {?string} webStoreUrl Url for more results. Null if not supported.
|
| * @param {function(boolean)} onDialogClosed Called when the dialog is closed.
|
| * The argument is the result of installation: true if an app is installed,
|
| * false otherwise.
|
| * @private
|
| */
|
| SuggestAppsDialog.prototype.showInternal_ =
|
| - function(filename, extension, mime, onDialogClosed) {
|
| + function(options, title, webStoreUrl, onDialogClosed) {
|
| if (this.state_ != SuggestAppsDialog.State.UNINITIALIZED) {
|
| console.error('Invalid state.');
|
| return;
|
| }
|
|
|
| - this.extension_ = extension;
|
| - this.mimeType_ = mime;
|
| + this.text_.hidden = true;
|
| + this.webstoreButton_.hidden = (webStoreUrl === null);
|
| + this.dialogText_ = '';
|
| +
|
| + this.webStoreUrl_ = webStoreUrl;
|
| + this.options_ = options;
|
| this.onDialogClosed_ = onDialogClosed;
|
| this.state_ = SuggestAppsDialog.State.INITIALIZING;
|
|
|
| @@ -224,7 +250,6 @@ SuggestAppsDialog.prototype.showInternal_ =
|
| return;
|
| }
|
|
|
| - var title = str('SUGGEST_DIALOG_TITLE');
|
| var show = this.dialogText_ ?
|
| FileManagerDialogBase.prototype.showTitleAndTextDialog.call(
|
| this, title, this.dialogText_) :
|
| @@ -259,9 +284,11 @@ SuggestAppsDialog.prototype.showInternal_ =
|
|
|
| this.webviewClient_ = new CWSContainerClient(
|
| this.webview_,
|
| - extension, mime, filename,
|
| - WEBVIEW_WIDTH, WEBVIEW_HEIGHT,
|
| - this.widgetUrl_, this.widgetOrigin_);
|
| + WEBVIEW_WIDTH,
|
| + WEBVIEW_HEIGHT,
|
| + this.widgetUrl_,
|
| + this.widgetOrigin_,
|
| + this.options_);
|
| this.webviewClient_.addEventListener(CWSContainerClient.Events.LOADED,
|
| this.onWidgetLoaded_.bind(this));
|
| this.webviewClient_.addEventListener(CWSContainerClient.Events.LOAD_FAILED,
|
| @@ -279,9 +306,9 @@ SuggestAppsDialog.prototype.showInternal_ =
|
| * @private
|
| */
|
| SuggestAppsDialog.prototype.onWebstoreLinkClicked_ = function(e) {
|
| - var webStoreUrl =
|
| - FileTasks.createWebStoreLink(this.extension_, this.mimeType_);
|
| - util.visitURL(webStoreUrl);
|
| + if (!this.webStoreUrl_)
|
| + return;
|
| + util.visitURL(this.webStoreUrl_);
|
| this.state_ = SuggestAppsDialog.State.OPENING_WEBSTORE_CLOSING;
|
| this.hide();
|
| };
|
| @@ -427,8 +454,8 @@ SuggestAppsDialog.prototype.hide = function(opt_originalOnHide) {
|
|
|
| this.webviewContainer_.removeChild(this.webview_);
|
| this.webview_ = null;
|
| - this.extension_ = null;
|
| - this.mime_ = null;
|
| + this.webStoreUrl_ = null;
|
| + this.options_ = null;
|
|
|
| FileManagerDialogBase.prototype.hide.call(
|
| this,
|
|
|