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

Unified Diff: chrome/common/extensions/docs/examples/apps/cycler/capture_tab.js

Issue 10832191: Major revision of page cycler UI. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Latest minus the offending PNG file Created 8 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/common/extensions/docs/examples/apps/cycler/capture_tab.js
diff --git a/chrome/common/extensions/docs/examples/apps/cycler/capture_tab.js b/chrome/common/extensions/docs/examples/apps/cycler/capture_tab.js
new file mode 100644
index 0000000000000000000000000000000000000000..dba1ad1c71bb9e70007547667911d7fe59285753
--- /dev/null
+++ b/chrome/common/extensions/docs/examples/apps/cycler/capture_tab.js
@@ -0,0 +1,92 @@
+// Copyright (c) 2012 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.
+
+/**
+ * Constructor for the tab UI governing setup and initial running of capture
+ * baselines. All HTML controls under tag #capture-tab, plus the tab label
+ * #capture-tab-label are controlled by this class.
+ * @param {!Object} cyclerUI The master UI class, needed for global state
+ * such as current capture name.
+ * @param {!Object} cyclerData The local FileSystem-based database of
+ * available captures to play back.
+ * @param {!Object} playbackTab The class governing playback selections.
+ * We need this in order to update its choices when we get asynchronous
+ * callbacks for successfully completed capture baselines.
+ */
+var CaptureTab = function (cyclerUI, cyclerData, playbackTab) {
+ // Members for all UI elements subject to programmatic adjustment.
+ this.tabLabel_ = $('#capture-tab-label');
+ this.captureTab_ = $('#capture-tab');
+ this.captureName_ = $('#capture-name');
+ this.captureURLs_ = $('#capture-urls');
+ this.doCaptureButton_ = $('#do-capture');
+
+ // References to other major components of the extension.
+ this.cyclerUI_ = cyclerUI;
+ this.cyclerData_ = cyclerData;
+ this.playbackTab_ = playbackTab;
+
+ /*
+ * Enable the capture tab and its label.
+ */
+ this.enable = function() {
+ this.captureTab_.hidden = false;
+ this.tabLabel_.classList.add('selected');
+ };
+
+ /*
+ * Disable the capture tab and its label.
+ */
+ this.disable = function() {
+ this.captureTab_.hidden = true;
+ this.tabLabel_.classList.remove('selected');
+ };
+
+ /**
+ * Do a capture using current data from the capture tab. Post an error
+ * dialog if said data is incorrect or incomplete. Otherwise pass
+ * control to the browser side.
+ * @private
+ */
+ this.doCapture_ = function() {
+ var errors = [];
+ var captureName = this.captureName_.value.trim();
+ var urlList;
+
+ urlList = this.captureURLs_.value.split('\n');
+ if (captureName.length == 0)
+ errors.push('Must give a capture name');
+ if (urlList.length == 0)
+ errors.push('Must give at least one URL');
+
+ if (errors.length > 0) {
+ this.cyclerUI_.showMessage(errors.join('\n'), 'Ok');
+ } else {
+ this.doCaptureButton_.disabled = true;
+ chrome.experimental.record.captureURLs(captureName, urlList,
+ this.onCaptureDone.bind(this));
+ }
+ }
+
+ /**
+ * Callback for completed (or possibly failed) capture. Post a message
+ * box, either with errors or "Success!" message.
+ * @param {!Array.<string>} errors List of errors that occured
+ * during capture, if any.
+ */
+ this.onCaptureDone = function(errors) {
+ this.doCaptureButton_.disabled = false;
+
+ if (errors.length > 0) {
+ this.cyclerUI_.showMessage(errors.join('\n'), 'Ok');
+ } else {
+ this.cyclerUI_.showMessage('Success!', 'Ok');
+ this.cyclerUI_.currentCaptureName = this.captureName_.value.trim();
+ this.cyclerData_.saveCapture(this.cyclerUI_.currentCaptureName);
+ }
+ }
+
+ // Set up listener for capture button.
+ this.doCaptureButton_.addEventListener('click', this.doCapture_.bind(this));
+};
« no previous file with comments | « chrome/common/extensions/api/experimental_record.json ('k') | chrome/common/extensions/docs/examples/apps/cycler/cycler.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698