OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 var CaptureTab = function (cyclerUI, cyclerData, playbackTab) { | |
6 // Members for all UI elements subject to programmatic adjustment. | |
7 this.captureTab_ = $('#capture-tab'); | |
8 this.captureName_ = $('#capture-name'); | |
9 this.captureURLs_ = $('#capture-urls'); | |
10 this.doCaptureButton_ = $('#do-capture'); | |
11 | |
12 // References to other major components of the extension. | |
13 this.cyclerUI_ = cyclerUI; | |
14 this.cyclerData_ = cyclerData; | |
15 this.playbackTab_ = playbackTab; | |
16 | |
17 /* | |
18 * Enable the capture tab. | |
19 */ | |
20 this.enable = function() { | |
21 this.captureTab_.hidden = false; | |
22 }; | |
23 | |
24 /* | |
25 * Disable the capture tab. | |
26 */ | |
27 this.disable = function() { | |
28 this.captureTab_.hidden = true; | |
29 }; | |
30 | |
31 /** | |
32 * Do a capture using current data from the capture tab. Post an error | |
33 * dialog if said data is incorrect or incomplete. Otherwise pass | |
34 * control to the browser side. | |
35 * @private | |
36 */ | |
37 this.doCapture_ = function() { | |
38 var errors = []; | |
39 var captureName = this.captureName_.value.trim(); | |
40 var urlList; | |
41 | |
42 urlList = this.captureURLs_.value.split('\n'); | |
43 if (captureName.length == 0) | |
44 errors.push('Must give a capture name'); | |
45 if (urlList.length == 0) | |
46 errors.push('Must give at least one URL'); | |
47 | |
48 if (errors.length > 0) { | |
49 this.cyclerUI_.showMessage(errors.join('\n'), 'Ok'); | |
50 } else { | |
51 this.doCaptureButton_.disabled = true; | |
52 chrome.experimental.record.captureURLs(captureName, urlList, | |
53 this.onCaptureDone.bind(this)); | |
54 } | |
55 } | |
56 | |
57 /** | |
58 * Callback for completed (or possibly failed) capture. Post a message | |
59 * box, either with errors or "Success!" message. | |
60 * @param {!Array.<string>} errors List of errors that occured | |
61 * during capture, if any. | |
62 */ | |
63 this.onCaptureDone = function(errors) { | |
64 this.doCaptureButton_.disabled = false; | |
65 | |
66 if (errors.length > 0) { | |
67 this.cyclerUI_.showMessage(errors.join('\n'), 'Ok'); | |
68 } else { | |
69 this.cyclerUI_.showMessage('Success!', 'Ok'); | |
70 this.cyclerUI_.currentCaptureName = this.captureName_.value.trim(); | |
71 this.cyclerData_.saveCapture(this.cyclerUI_.currentCaptureName); | |
72 this.playbackTab_.updatePlaybackChoices_(); | |
Jeffrey Yasskin
2012/08/15 01:03:59
It seems odd to update this here without showing t
clintstaley
2012/08/15 23:54:20
This is an asynchronous return, and it may be some
Jeffrey Yasskin
2012/08/16 20:19:31
Ah, yes. I hadn't thought of the user switching ta
clintstaley
2012/08/17 04:12:25
A later CL will include the ability to cancel an o
Jeffrey Yasskin
2012/08/17 19:32:14
You may want to make the cyclerData observable (ya
| |
73 } | |
74 } | |
75 | |
76 // Set up listener for capture button. | |
77 this.doCaptureButton_.addEventListener('click', this.doCapture_.bind(this)); | |
78 }; | |
OLD | NEW |