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

Unified Diff: chrome_frame/cfinstall/src/implementation/crossdomaininstall.js

Issue 8467005: Publish the source for CFInstall.min.js . (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Line length fixes. Created 9 years, 1 month 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_frame/cfinstall/src/implementation/crossdomaininstall.js
diff --git a/chrome_frame/cfinstall/src/implementation/crossdomaininstall.js b/chrome_frame/cfinstall/src/implementation/crossdomaininstall.js
new file mode 100755
index 0000000000000000000000000000000000000000..38a16703475cbcd201630755bee030c0892a9484
--- /dev/null
+++ b/chrome_frame/cfinstall/src/implementation/crossdomaininstall.js
@@ -0,0 +1,111 @@
+// Copyright (c) 2011 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.
+
+/**
+ * @fileoverview Implements the in-line Google Chrome Frame installation flow.
+ * Displays a dialog containing the download page. Upon completion, registers
+ * the Google Chrome Frame components in the current browser process.
+ *
+ **/
+goog.provide('google.cf.installer.CrossDomainInstall');
+
+goog.require('goog.net.xpc.CrossPageChannel');
+goog.require('goog.style');
+goog.require('goog.Uri');
+
+goog.require('google.cf.installer.InteractionDelegate');
+goog.require('google.cf.installer.DialogInteractionDelegate');
+
+/**
+ * @type {Object}
+ **/
+google.cf.installer.CrossDomainInstall = {};
+
+/**
+ * @define {string} Defines the default download page URL.
+ **/
+google.cf.installer.CrossDomainInstall.DEFAULT_DOWNLOAD_PAGE_URL =
+ '//www.google.com/chromeframe/eula.html';
+
+/**
+ * Executes the in-line installation flow.
+ * @param {function()} successHandler Invoked upon installation success. When
+ * invoked, Google Chrome Frame will be active in the current and all
+ * future-launched browser processes.
+ * @param {function()=} opt_failureHandler Invoked upon installation failure or
+ * cancellation.
+ * @param {string=} opt_url An alternative URL for the download page.
+ * @param {google.cf.installer.InteractionDelegate=} opt_interactionDelegate An
+ * alternative UI implementation for the modal dialog.
+ * @param {string=} opt_dummyResourceUri A manually-specified dummy resource URI
+ * that will be used to carry cross-domain responses.
+ */
+google.cf.installer.CrossDomainInstall.execute = function(
+ successHandler, opt_failureHandler, opt_url, opt_interactionDelegate,
+ opt_dummyResourceUri) {
+ var url = new goog.Uri(
+ opt_url ||
+ google.cf.installer.CrossDomainInstall.DEFAULT_DOWNLOAD_PAGE_URL);
+
+ if (!url.hasScheme())
+ url = new goog.Uri(window.location.href).resolve(url);
+
+ var interactionDelegate = opt_interactionDelegate ||
+ new google.cf.installer.DialogInteractionDelegate();
+
+ var cfg = {};
+
+ // TODO(user): Probably need to import some of the link/image url
+ // detection stuff from XDRPC.
+ if (opt_dummyResourceUri) {
+ var dummyUrl = new goog.Uri(opt_dummyResourceUri);
+ if (!dummyUrl.hasScheme())
+ dummyUrl = new goog.Uri(window.location.href).resolve(dummyUrl);
+
+ cfg[goog.net.xpc.CfgFields.LOCAL_POLL_URI] = dummyUrl.toString();
+ }
+
+ cfg[goog.net.xpc.CfgFields.PEER_URI] = url.toString();
+
+ var channel = new goog.net.xpc.CrossPageChannel(cfg);
+ var iframe = channel.createPeerIframe(
+ interactionDelegate.getIFrameContainer(),
+ function(newIFrame) {
+ newIFrame.setAttribute('frameBorder', '0');
+ newIFrame.setAttribute('border', '0');
+ interactionDelegate.customizeIFrame(newIFrame);
+ });
+ channel.registerService('dimensions', function(size) {
+ goog.style.setContentBoxSize(iframe, new goog.math.Size(size['width'],
+ size['height']));
+ interactionDelegate.show();
+ }, true); // true => deserialize messages into objects
+ channel.registerService('result', function(obj) {
+ channel.close();
+ interactionDelegate.reset();
+ var result = obj['result'];
+ if (result)
+ successHandler();
+ else if (opt_failureHandler)
+ opt_failureHandler();
+ }, true); // true => deserialize messages into objects
+ // TODO(user): Perhaps listen to onload and set a timeout for connect.
+ channel.connect();
+};
+
+// In compiled mode, this binary is wrapped in an anonymous function which
+// receives the outer scope as its only parameter. In non-compiled mode, the
+// outer scope is window.
+// Look in the outer scope for the stub, and pass it the implementation.
+try {
+ if (arguments[0]['CF_google_cf_xd_install_stub']) {
+ arguments[0]['CF_google_cf_xd_install_stub'](
+ google.cf.installer.CrossDomainInstall.execute);
+ }
+} catch (e) {
+ if (window['CF_google_cf_xd_install_stub']) {
+ window['CF_google_cf_xd_install_stub'](
+ google.cf.installer.CrossDomainInstall.execute);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698