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

Side by Side Diff: chrome/browser/resources/file_manager/js/share_dialog.js

Issue 22185002: Add browser test to the sharing dialog feature in Files.app. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added the licence header. Created 7 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 'use strict'; 5 'use strict';
6 6
7 /** 7 /**
8 * @param {HTMLElement} parentNode Node to be parent for this dialog. 8 * @param {HTMLElement} parentNode Node to be parent for this dialog.
9 * @constructor 9 * @constructor
10 * @extends {cr.ui.dialogs.BaseDialog} 10 * @extends {cr.ui.dialogs.BaseDialog}
(...skipping 14 matching lines...) Expand all
25 25
26 /** 26 /**
27 * Timeout for loading the share dialog before giving up. 27 * Timeout for loading the share dialog before giving up.
28 * @type {number} 28 * @type {number}
29 * @const 29 * @const
30 */ 30 */
31 ShareDialog.FAILURE_TIMEOUT = 5000; 31 ShareDialog.FAILURE_TIMEOUT = 5000;
32 32
33 /** 33 /**
34 * Wraps a Web View element and adds authorization headers to it. 34 * Wraps a Web View element and adds authorization headers to it.
35 * @param {origin} origin Origin to be authorized. 35 * @param {string} urlPattern Pattern of urls to be authorized.
36 * @param {WebView} webView Web View element to be wrapped. 36 * @param {WebView} webView Web View element to be wrapped.
37 * @constructor 37 * @constructor
38 */ 38 */
39 ShareDialog.WebViewAuthorizer = function(origin, webView) { 39 ShareDialog.WebViewAuthorizer = function(urlPattern, webView) {
40 this.origin_ = origin; 40 this.urlPattern_ = urlPattern;
41 this.webView_ = webView; 41 this.webView_ = webView;
42 this.initialized_ = false; 42 this.initialized_ = false;
43 this.accessToken_ = null; 43 this.accessToken_ = null;
44 }; 44 };
45 45
46 /** 46 /**
47 * Initializes the web view by installing hooks injecting the authorization 47 * Initializes the web view by installing hooks injecting the authorization
48 * headers. 48 * headers.
49 * @param {function()} callback Completion callback. 49 * @param {function()} callback Completion callback.
50 */ 50 */
51 ShareDialog.WebViewAuthorizer.prototype.initialize = function(callback) { 51 ShareDialog.WebViewAuthorizer.prototype.initialize = function(callback) {
52 if (this.initialized_) { 52 if (this.initialized_) {
53 callback(); 53 callback();
54 return; 54 return;
55 } 55 }
56 56
57 var registerInjectionHooks = function() { 57 var registerInjectionHooks = function() {
58 this.webView_.removeEventListener('loadstop', registerInjectionHooks); 58 this.webView_.removeEventListener('loadstop', registerInjectionHooks);
59 this.webView_.onBeforeSendHeaders.addListener( 59 this.webView_.onBeforeSendHeaders.addListener(
60 this.authorizeRequest_.bind(this), 60 this.authorizeRequest_.bind(this),
61 {urls: [this.origin_ + '/*']}, 61 {urls: [this.urlPattern_]},
62 ['blocking', 'requestHeaders']); 62 ['blocking', 'requestHeaders']);
63 this.initialized_ = true; 63 this.initialized_ = true;
64 callback(); 64 callback();
65 }.bind(this); 65 }.bind(this);
66 66
67 this.webView_.addEventListener('loadstop', registerInjectionHooks); 67 this.webView_.addEventListener('loadstop', registerInjectionHooks);
68 this.webView_.setAttribute('src', 'data:text/html,'); 68 this.webView_.setAttribute('src', 'data:text/html,');
69 }; 69 };
70 70
71 /** 71 /**
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 this.failureTimeout_ = setTimeout(function() { 211 this.failureTimeout_ = setTimeout(function() {
212 onError(); 212 onError();
213 }, ShareDialog.FAILURE_TIMEOUT); 213 }, ShareDialog.FAILURE_TIMEOUT);
214 214
215 // TODO(mtomasz): Move to initDom_() once and reuse <webview> once it gets 215 // TODO(mtomasz): Move to initDom_() once and reuse <webview> once it gets
216 // fixed. See: crbug.com/260622. 216 // fixed. See: crbug.com/260622.
217 this.webView_ = util.createChild( 217 this.webView_ = util.createChild(
218 this.webViewWrapper_, 'share-dialog-webview', 'webview'); 218 this.webViewWrapper_, 'share-dialog-webview', 'webview');
219 this.webView_.setAttribute('tabIndex', '-1'); 219 this.webView_.setAttribute('tabIndex', '-1');
220 this.webViewAuthorizer_ = new ShareDialog.WebViewAuthorizer( 220 this.webViewAuthorizer_ = new ShareDialog.WebViewAuthorizer(
221 ShareClient.SHARE_TARGET, this.webView_); 221 !window.IN_TEST ? (ShareClient.SHARE_TARGET + '/*') : '<all_urls>',
222 this.webView_);
222 this.webView_.addEventListener('newwindow', function(e) { 223 this.webView_.addEventListener('newwindow', function(e) {
223 // Discard the window object and reopen in an external window. 224 // Discard the window object and reopen in an external window.
224 e.window.discard(); 225 e.window.discard();
225 chrome.windows.create({url: e.targetUrl}); 226 chrome.windows.create({url: e.targetUrl});
226 e.preventDefault(); 227 e.preventDefault();
227 }); 228 });
228
229 cr.ui.dialogs.BaseDialog.prototype.show.call(this, '', null, null, null); 229 cr.ui.dialogs.BaseDialog.prototype.show.call(this, '', null, null, null);
230 230
231 // Initialize and authorize the Web View tag asynchronously. 231 // Initialize and authorize the Web View tag asynchronously.
232 var group = new AsyncUtil.Group(); 232 var group = new AsyncUtil.Group();
233 233
234 // Fetches an url to the sharing dialog. 234 // Fetches an url to the sharing dialog.
235 var shareUrl; 235 var shareUrl;
236 var getShareUrlClosure = function(callback) { 236 var getShareUrlClosure = function(callback) {
237 chrome.fileBrowserPrivate.getShareUrl( 237 chrome.fileBrowserPrivate.getShareUrl(
238 entry.toURL(), 238 entry.toURL(),
(...skipping 25 matching lines...) Expand all
264 }.bind(this)); 264 }.bind(this));
265 }; 265 };
266 266
267 /** 267 /**
268 * Tells whether the share dialog is being shown or not. 268 * Tells whether the share dialog is being shown or not.
269 * @return {boolean} True if shown, false otherwise. 269 * @return {boolean} True if shown, false otherwise.
270 */ 270 */
271 ShareDialog.prototype.isShowing = function() { 271 ShareDialog.prototype.isShowing = function() {
272 return this.container_.classList.contains('shown'); 272 return this.container_.classList.contains('shown');
273 }; 273 };
OLDNEW
« no previous file with comments | « chrome/browser/resources/file_manager/js/share_client.js ('k') | chrome/browser/resources/file_manager/js/test_util.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698