OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 cr.define('options', function() { | 5 cr.define('options', function() { |
6 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; | 6 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; |
7 /** @const */ var Grid = cr.ui.Grid; | 7 /** @const */ var Grid = cr.ui.Grid; |
8 /** @const */ var GridItem = cr.ui.GridItem; | 8 /** @const */ var GridItem = cr.ui.GridItem; |
9 /** @const */ var GridSelectionController = cr.ui.GridSelectionController; | 9 /** @const */ var GridSelectionController = cr.ui.GridSelectionController; |
10 /** @const */ var ListSingleSelectionModel = cr.ui.ListSingleSelectionModel; | 10 /** @const */ var ListSingleSelectionModel = cr.ui.ListSingleSelectionModel; |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 * Updates the preview image, if present. | 181 * Updates the preview image, if present. |
182 * @private | 182 * @private |
183 */ | 183 */ |
184 updatePreview_: function() { | 184 updatePreview_: function() { |
185 var url = this.selectedItemUrl; | 185 var url = this.selectedItemUrl; |
186 if (url && this.previewImage_) | 186 if (url && this.previewImage_) |
187 this.previewImage_.src = url; | 187 this.previewImage_.src = url; |
188 }, | 188 }, |
189 | 189 |
190 /** | 190 /** |
191 * @param {boolean} present Whether a camera is present or not. | 191 * Whether a camera is present or not. |
| 192 * @type {boolean} |
192 */ | 193 */ |
193 get cameraPresent() { | 194 get cameraPresent() { |
194 return this.cameraPresent_; | 195 return this.cameraPresent_; |
195 }, | 196 }, |
196 set cameraPresent(value) { | 197 set cameraPresent(value) { |
197 this.cameraPresent_ = value; | 198 this.cameraPresent_ = value; |
198 if (this.cameraLive) | 199 if (this.cameraLive) |
199 this.cameraImage = null; | 200 this.cameraImage = null; |
200 }, | 201 }, |
201 | 202 |
202 /** | 203 /** |
| 204 * Whether camera is actually streaming video. May be |false| even when |
| 205 * camera is present and shown but still initializing. |
| 206 * @type {boolean} |
| 207 */ |
| 208 get cameraOnline() { |
| 209 return this.previewElement.classList.contains('online'); |
| 210 }, |
| 211 |
| 212 /** |
203 * Start camera presence check. | 213 * Start camera presence check. |
204 * @param {boolean} autoplay Whether to start capture immediately. | 214 * @param {boolean} autoplay Whether to start capture immediately. |
205 * @param {boolean} preselect Whether to select camera automatically. | 215 * @param {boolean} preselect Whether to select camera automatically. |
206 */ | 216 */ |
207 checkCameraPresence: function(autoplay, preselect) { | 217 checkCameraPresence: function(autoplay, preselect) { |
208 this.previewElement.classList.remove('online'); | 218 this.previewElement.classList.remove('online'); |
209 if (!this.cameraVideo_) | 219 if (!this.cameraVideo_) |
210 return; | 220 return; |
211 navigator.webkitGetUserMedia( | 221 navigator.webkitGetUserMedia( |
212 {video: true}, | 222 {video: true}, |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 }, | 442 }, |
433 set flipPhoto(value) { | 443 set flipPhoto(value) { |
434 this.flipPhoto_ = value; | 444 this.flipPhoto_ = value; |
435 this.previewElement.classList[value ? 'add' : 'remove']('flip-x'); | 445 this.previewElement.classList[value ? 'add' : 'remove']('flip-x'); |
436 }, | 446 }, |
437 | 447 |
438 /** | 448 /** |
439 * Performs photo capture from the live camera stream. | 449 * Performs photo capture from the live camera stream. |
440 * @param {function=} opt_callback Callback that receives taken photo as | 450 * @param {function=} opt_callback Callback that receives taken photo as |
441 * data URL. | 451 * data URL. |
| 452 * @return {boolean} Whether photo capture was successful. |
442 */ | 453 */ |
443 takePhoto: function(opt_callback) { | 454 takePhoto: function(opt_callback) { |
| 455 if (!this.cameraOnline) |
| 456 return false; |
444 var canvas = document.createElement('canvas'); | 457 var canvas = document.createElement('canvas'); |
445 canvas.width = CAPTURE_SIZE.width; | 458 canvas.width = CAPTURE_SIZE.width; |
446 canvas.height = CAPTURE_SIZE.height; | 459 canvas.height = CAPTURE_SIZE.height; |
447 this.captureFrame_( | 460 this.captureFrame_( |
448 this.cameraVideo_, canvas.getContext('2d'), CAPTURE_SIZE); | 461 this.cameraVideo_, canvas.getContext('2d'), CAPTURE_SIZE); |
449 var photoURL = canvas.toDataURL('image/png'); | 462 var photoURL = canvas.toDataURL('image/png'); |
450 if (opt_callback && typeof opt_callback == 'function') | 463 if (opt_callback && typeof opt_callback == 'function') |
451 opt_callback(photoURL); | 464 opt_callback(photoURL); |
452 // Wait until image is loaded before displaying it. | 465 // Wait until image is loaded before displaying it. |
453 var self = this; | 466 var self = this; |
454 var previewImg = new Image(); | 467 var previewImg = new Image(); |
455 previewImg.addEventListener('load', function(e) { | 468 previewImg.addEventListener('load', function(e) { |
456 self.cameraImage = this.src; | 469 self.cameraImage = this.src; |
457 }); | 470 }); |
458 previewImg.src = photoURL; | 471 previewImg.src = photoURL; |
| 472 return true; |
459 }, | 473 }, |
460 | 474 |
461 /** | 475 /** |
462 * Performs video capture from the live camera stream. | 476 * Performs video capture from the live camera stream. |
463 * @param {function=} opt_callback Callback that receives taken video as | 477 * @param {function=} opt_callback Callback that receives taken video as |
464 * data URL of a vertically stacked PNG sprite. | 478 * data URL of a vertically stacked PNG sprite. |
465 */ | 479 */ |
466 takeVideo: function(opt_callback) { | 480 takeVideo: function(opt_callback) { |
467 var canvas = document.createElement('canvas'); | 481 var canvas = document.createElement('canvas'); |
468 canvas.width = CAPTURE_SIZE.width; | 482 canvas.width = CAPTURE_SIZE.width; |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
651 UserImagesGrid.ButtonImages = { | 665 UserImagesGrid.ButtonImages = { |
652 TAKE_PHOTO: 'chrome://theme/IDR_BUTTON_USER_IMAGE_TAKE_PHOTO', | 666 TAKE_PHOTO: 'chrome://theme/IDR_BUTTON_USER_IMAGE_TAKE_PHOTO', |
653 CHOOSE_FILE: 'chrome://theme/IDR_BUTTON_USER_IMAGE_CHOOSE_FILE', | 667 CHOOSE_FILE: 'chrome://theme/IDR_BUTTON_USER_IMAGE_CHOOSE_FILE', |
654 PROFILE_PICTURE: 'chrome://theme/IDR_PROFILE_PICTURE_LOADING' | 668 PROFILE_PICTURE: 'chrome://theme/IDR_PROFILE_PICTURE_LOADING' |
655 }; | 669 }; |
656 | 670 |
657 return { | 671 return { |
658 UserImagesGrid: UserImagesGrid | 672 UserImagesGrid: UserImagesGrid |
659 }; | 673 }; |
660 }); | 674 }); |
OLD | NEW |