| Index: chrome/browser/resources/file_manager/js/share_dialog.js
|
| diff --git a/chrome/browser/resources/file_manager/js/share_dialog.js b/chrome/browser/resources/file_manager/js/share_dialog.js
|
| deleted file mode 100644
|
| index 19eb07e3f790e183e3230e99d40162750ac196e3..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/resources/file_manager/js/share_dialog.js
|
| +++ /dev/null
|
| @@ -1,318 +0,0 @@
|
| -// 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.
|
| -
|
| -'use strict';
|
| -
|
| -/**
|
| - * @param {HTMLElement} parentNode Node to be parent for this dialog.
|
| - * @constructor
|
| - * @extends {FileManagerDialogBase}
|
| - * @implements {ShareClient.Observer}
|
| - */
|
| -function ShareDialog(parentNode) {
|
| - this.queue_ = new AsyncUtil.Queue();
|
| - this.onQueueTaskFinished_ = null;
|
| - this.shareClient_ = null;
|
| - this.spinner_ = null;
|
| - this.spinnerWrapper_ = null;
|
| - this.webViewWrapper_ = null;
|
| - this.webView_ = null;
|
| - this.failureTimeout_ = null;
|
| - this.callback_ = null;
|
| -
|
| - FileManagerDialogBase.call(this, parentNode);
|
| -}
|
| -
|
| -/**
|
| - * Timeout for loading the share dialog before giving up.
|
| - * @type {number}
|
| - * @const
|
| - */
|
| -ShareDialog.FAILURE_TIMEOUT = 10000;
|
| -
|
| -/**
|
| - * The result of opening the dialog.
|
| - * @enum {string}
|
| - * @const
|
| - */
|
| -ShareDialog.Result = Object.freeze({
|
| - // The dialog is closed normally. This includes user cancel.
|
| - SUCCESS: 'success',
|
| - // The dialog is closed by network error.
|
| - NETWORK_ERROR: 'networkError',
|
| - // The dialog is not opened because it is already showing.
|
| - ALREADY_SHOWING: 'alreadyShowing'
|
| -});
|
| -
|
| -/**
|
| - * Wraps a Web View element and adds authorization headers to it.
|
| - * @param {string} urlPattern Pattern of urls to be authorized.
|
| - * @param {WebView} webView Web View element to be wrapped.
|
| - * @constructor
|
| - */
|
| -ShareDialog.WebViewAuthorizer = function(urlPattern, webView) {
|
| - this.urlPattern_ = urlPattern;
|
| - this.webView_ = webView;
|
| - this.initialized_ = false;
|
| - this.accessToken_ = null;
|
| -};
|
| -
|
| -/**
|
| - * Initializes the web view by installing hooks injecting the authorization
|
| - * headers.
|
| - * @param {function()} callback Completion callback.
|
| - */
|
| -ShareDialog.WebViewAuthorizer.prototype.initialize = function(callback) {
|
| - if (this.initialized_) {
|
| - callback();
|
| - return;
|
| - }
|
| -
|
| - var registerInjectionHooks = function() {
|
| - this.webView_.removeEventListener('loadstop', registerInjectionHooks);
|
| - this.webView_.request.onBeforeSendHeaders.addListener(
|
| - this.authorizeRequest_.bind(this),
|
| - {urls: [this.urlPattern_]},
|
| - ['blocking', 'requestHeaders']);
|
| - this.initialized_ = true;
|
| - callback();
|
| - }.bind(this);
|
| -
|
| - this.webView_.addEventListener('loadstop', registerInjectionHooks);
|
| - this.webView_.setAttribute('src', 'data:text/html,');
|
| -};
|
| -
|
| -/**
|
| - * Authorizes the web view by fetching the freshest access tokens.
|
| - * @param {function()} callback Completion callback.
|
| - */
|
| -ShareDialog.WebViewAuthorizer.prototype.authorize = function(callback) {
|
| - // Fetch or update the access token.
|
| - chrome.fileBrowserPrivate.requestAccessToken(false, // force_refresh
|
| - function(inAccessToken) {
|
| - this.accessToken_ = inAccessToken;
|
| - callback();
|
| - }.bind(this));
|
| -};
|
| -
|
| -/**
|
| - * Injects headers into the passed request.
|
| - * @param {Event} e Request event.
|
| - * @return {{requestHeaders: HttpHeaders}} Modified headers.
|
| - * @private
|
| - */
|
| -ShareDialog.WebViewAuthorizer.prototype.authorizeRequest_ = function(e) {
|
| - e.requestHeaders.push({
|
| - name: 'Authorization',
|
| - value: 'Bearer ' + this.accessToken_
|
| - });
|
| - return {requestHeaders: e.requestHeaders};
|
| -};
|
| -
|
| -ShareDialog.prototype = {
|
| - __proto__: FileManagerDialogBase.prototype
|
| -};
|
| -
|
| -/**
|
| - * One-time initialization of DOM.
|
| - * @private
|
| - */
|
| -ShareDialog.prototype.initDom_ = function() {
|
| - FileManagerDialogBase.prototype.initDom_.call(this);
|
| - this.frame_.classList.add('share-dialog-frame');
|
| -
|
| - this.spinnerWrapper_ = this.document_.createElement('div');
|
| - this.spinnerWrapper_.className = 'spinner-container';
|
| - this.frame_.appendChild(this.spinnerWrapper_);
|
| -
|
| - this.spinner_ = this.document_.createElement('div');
|
| - this.spinner_.className = 'spinner';
|
| - this.spinnerWrapper_.appendChild(this.spinner_);
|
| -
|
| - this.webViewWrapper_ = this.document_.createElement('div');
|
| - this.webViewWrapper_.className = 'share-dialog-webview-wrapper';
|
| - this.cancelButton_.hidden = true;
|
| - this.okButton_.hidden = true;
|
| - this.frame_.insertBefore(this.webViewWrapper_,
|
| - this.frame_.querySelector('.cr-dialog-buttons'));
|
| -};
|
| -
|
| -/**
|
| - * @override
|
| - */
|
| -ShareDialog.prototype.onResized = function(width, height, callback) {
|
| - if (width && height) {
|
| - this.webViewWrapper_.style.width = width + 'px';
|
| - this.webViewWrapper_.style.height = height + 'px';
|
| - this.webView_.style.width = width + 'px';
|
| - this.webView_.style.height = height + 'px';
|
| - }
|
| - setTimeout(callback, 0);
|
| -};
|
| -
|
| -/**
|
| - * @override
|
| - */
|
| -ShareDialog.prototype.onClosed = function() {
|
| - this.hide();
|
| -};
|
| -
|
| -/**
|
| - * @override
|
| - */
|
| -ShareDialog.prototype.onLoaded = function() {
|
| - if (this.failureTimeout_) {
|
| - clearTimeout(this.failureTimeout_);
|
| - this.failureTimeout_ = null;
|
| - }
|
| -
|
| - // Logs added temporarily to track crbug.com/288783.
|
| - console.debug('Loaded.');
|
| -
|
| - this.okButton_.hidden = false;
|
| - this.spinnerWrapper_.hidden = true;
|
| - this.webViewWrapper_.classList.add('loaded');
|
| - this.webView_.focus();
|
| -};
|
| -
|
| -/**
|
| - * @override
|
| - */
|
| -ShareDialog.prototype.onLoadFailed = function() {
|
| - this.hideWithResult(ShareDialog.Result.NETWORK_ERROR);
|
| -};
|
| -
|
| -/**
|
| - * @override
|
| - */
|
| -ShareDialog.prototype.hide = function(opt_onHide) {
|
| - this.hideWithResult(ShareDialog.Result.SUCCESS, opt_onHide);
|
| -};
|
| -
|
| -/**
|
| - * Hide the dialog with the result and the callback.
|
| - * @param {ShareDialog.Result} result Result passed to the closing callback.
|
| - * @param {function()=} opt_onHide Callback called at the end of hiding.
|
| - */
|
| -ShareDialog.prototype.hideWithResult = function(result, opt_onHide) {
|
| - if (!this.isShowing())
|
| - return;
|
| -
|
| - if (this.shareClient_) {
|
| - this.shareClient_.dispose();
|
| - this.shareClient_ = null;
|
| - }
|
| -
|
| - this.webViewWrapper_.textContent = '';
|
| - if (this.failureTimeout_) {
|
| - clearTimeout(this.failureTimeout_);
|
| - this.failureTimeout_ = null;
|
| - }
|
| -
|
| - FileManagerDialogBase.prototype.hide.call(
|
| - this,
|
| - function() {
|
| - if (opt_onHide)
|
| - opt_onHide();
|
| - this.callback_(result);
|
| - this.callback_ = null;
|
| - }.bind(this));
|
| -};
|
| -
|
| -/**
|
| - * Shows the dialog.
|
| - * @param {FileEntry} entry Entry to share.
|
| - * @param {function(boolean)} callback Callback to be called when the showing
|
| - * task is completed. The argument is whether to succeed or not. Note that
|
| - * cancel is regarded as success.
|
| - */
|
| -ShareDialog.prototype.show = function(entry, callback) {
|
| - // If the dialog is already showing, return the error.
|
| - if (this.isShowing()) {
|
| - callback(ShareDialog.Result.ALREADY_SHOWING);
|
| - return;
|
| - }
|
| -
|
| - // Initialize the variables.
|
| - this.callback_ = callback;
|
| - this.spinnerWrapper_.hidden = false;
|
| - this.webViewWrapper_.style.width = '';
|
| - this.webViewWrapper_.style.height = '';
|
| -
|
| - // If the embedded share dialog is not started within some time, then
|
| - // give up and show an error message.
|
| - this.failureTimeout_ = setTimeout(function() {
|
| - this.hideWithResult(ShareDialog.Result.NETWORK_ERROR);
|
| -
|
| - // Logs added temporarily to track crbug.com/288783.
|
| - console.debug('Timeout. Web View points at: ' + this.webView_.src);
|
| - }.bind(this), ShareDialog.FAILURE_TIMEOUT);
|
| -
|
| - // TODO(mtomasz): Move to initDom_() once and reuse <webview> once it gets
|
| - // fixed. See: crbug.com/260622.
|
| - this.webView_ = util.createChild(
|
| - this.webViewWrapper_, 'share-dialog-webview', 'webview');
|
| - this.webView_.setAttribute('tabIndex', '-1');
|
| - this.webViewAuthorizer_ = new ShareDialog.WebViewAuthorizer(
|
| - !window.IN_TEST ? (ShareClient.SHARE_TARGET + '/*') : '<all_urls>',
|
| - this.webView_);
|
| - this.webView_.addEventListener('newwindow', function(e) {
|
| - // Discard the window object and reopen in an external window.
|
| - e.window.discard();
|
| - util.visitURL(e.targetUrl);
|
| - e.preventDefault();
|
| - });
|
| - var show = FileManagerDialogBase.prototype.showBlankDialog.call(this);
|
| - if (!show) {
|
| - // The code shoundn't get here, since already-showing was handled before.
|
| - console.error('ShareDialog can\'t be shown.');
|
| - return;
|
| - }
|
| -
|
| - // Initialize and authorize the Web View tag asynchronously.
|
| - var group = new AsyncUtil.Group();
|
| -
|
| - // Fetches an url to the sharing dialog.
|
| - var shareUrl;
|
| - group.add(function(inCallback) {
|
| - chrome.fileBrowserPrivate.getShareUrl(
|
| - entry.toURL(),
|
| - function(inShareUrl) {
|
| - if (!chrome.runtime.lastError)
|
| - shareUrl = inShareUrl;
|
| - inCallback();
|
| - });
|
| - });
|
| - group.add(this.webViewAuthorizer_.initialize.bind(this.webViewAuthorizer_));
|
| - group.add(this.webViewAuthorizer_.authorize.bind(this.webViewAuthorizer_));
|
| -
|
| - // Loads the share widget once all the previous async calls are finished.
|
| - group.run(function() {
|
| - // If the url is not obtained, return the network error.
|
| - if (!shareUrl) {
|
| - // Logs added temporarily to track crbug.com/288783.
|
| - console.debug('URL not available.');
|
| -
|
| - this.hideWithResult(ShareDialog.Result.NETWORK_ERROR);
|
| - return;
|
| - }
|
| - // Already inactive, therefore ignore.
|
| - if (!this.isShowing())
|
| - return;
|
| - this.shareClient_ = new ShareClient(this.webView_,
|
| - shareUrl,
|
| - this);
|
| - this.shareClient_.load();
|
| - }.bind(this));
|
| -};
|
| -
|
| -/**
|
| - * Tells whether the share dialog is showing or not.
|
| - *
|
| - * @return {boolean} True since the show method is called and until the closing
|
| - * callback is invoked.
|
| - */
|
| -ShareDialog.prototype.isShowing = function() {
|
| - return !!this.callback_;
|
| -};
|
|
|