Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1465)

Unified Diff: chrome/browser/resources/file_manager/js/share_dialog.js

Issue 39123003: [Files.app] Split the JavaScript files into subdirectories: common, background, and foreground (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed test failure. Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;
-};

Powered by Google App Engine
This is Rietveld 408576698