OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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('settings_test', function() { | 5 cr.define('settings_test', function() { |
6 var changePictureOptions = settings_test.changePictureOptions || { | 6 var changePictureOptions = settings_test.changePictureOptions || { |
7 /** | 7 /** |
8 * True if property changes should fire events for testing purposes. | 8 * True if property changes should fire events for testing purposes. |
9 * @type {boolean} | 9 * @type {boolean} |
10 */ | 10 */ |
(...skipping 21 matching lines...) Expand all Loading... |
32 /** | 32 /** |
33 * The currently selected profile image URL. May be a data URL. | 33 * The currently selected profile image URL. May be a data URL. |
34 * @private {string} | 34 * @private {string} |
35 */ | 35 */ |
36 selectedImageUrl_: { | 36 selectedImageUrl_: { |
37 type: String, | 37 type: String, |
38 notify: settings_test.changePictureOptions.notifyPropertyChangesForTest, | 38 notify: settings_test.changePictureOptions.notifyPropertyChangesForTest, |
39 }, | 39 }, |
40 | 40 |
41 /** | 41 /** |
| 42 * True only if the user has selected the camera icon. Old photos captured |
| 43 * from the camera are represented as the 'old' image. |
| 44 * @private {boolean} |
| 45 */ |
| 46 cameraActive_: { |
| 47 type: Boolean, |
| 48 value: false, |
| 49 }, |
| 50 |
| 51 /** |
| 52 * This differs from its default value only if the user has just captured |
| 53 * a new photo from the camera. |
| 54 * @private {string} |
| 55 */ |
| 56 cameraImageUrl_: { |
| 57 type: String, |
| 58 value: settings.ChangePicturePrivateApi.ButtonImages.TAKE_PHOTO, |
| 59 }, |
| 60 |
| 61 /** |
| 62 * This differs from its default value only if the user has just captured |
| 63 * a new photo from the camera. |
| 64 * @private {string} |
| 65 */ |
| 66 cameraImageTitle_: { |
| 67 type: String, |
| 68 value: function() { return loadTimeData.getString('takePhoto'); }, |
| 69 }, |
| 70 |
| 71 /** |
42 * The url of the 'old' image, which is the existing image sourced from | 72 * The url of the 'old' image, which is the existing image sourced from |
43 * the camera, a file, or a deprecated default image. | 73 * the camera, a file, or a deprecated default image. |
44 * @private {string} | 74 * @private {string} |
45 */ | 75 */ |
46 oldImageUrl_: String, | 76 oldImageUrl_: String, |
47 | 77 |
48 /** | 78 /** |
49 * The url of the profile image. | 79 * The url of the profile image. |
50 * @private {string} | 80 * @private {string} |
51 */ | 81 */ |
(...skipping 22 matching lines...) Expand all Loading... |
74 */ | 104 */ |
75 receiveDefaultImages: function(images) { | 105 receiveDefaultImages: function(images) { |
76 this.defaultImages_ = images; | 106 this.defaultImages_ = images; |
77 }.bind(this), | 107 }.bind(this), |
78 | 108 |
79 /** | 109 /** |
80 * Called from C++ to provide the URL of the selected image. | 110 * Called from C++ to provide the URL of the selected image. |
81 * @param {string} imageUrl | 111 * @param {string} imageUrl |
82 */ | 112 */ |
83 receiveSelectedImage: function(imageUrl) { | 113 receiveSelectedImage: function(imageUrl) { |
| 114 this.cameraActive_ = false; |
84 this.selectedImageUrl_ = imageUrl; | 115 this.selectedImageUrl_ = imageUrl; |
85 }.bind(this), | 116 }.bind(this), |
86 | 117 |
87 /** | 118 /** |
88 * Called from C++ to provide the URL of the 'old' image. The 'old' | 119 * Called from C++ to provide the URL of the 'old' image. The 'old' |
89 * image is any selected non-profile and non-default image. It can be | 120 * image is any selected non-profile and non-default image. It can be |
90 * from the camera, a file, or a deprecated default image. When this | 121 * from the camera, a file, or a deprecated default image. When this |
91 * method is called, it's implied that the old image is selected. | 122 * method is called, it's implied that the old image is selected. |
92 * @param {string} imageUrl | 123 * @param {string} imageUrl |
93 */ | 124 */ |
94 receiveOldImage: function(imageUrl) { | 125 receiveOldImage: function(imageUrl) { |
| 126 this.cameraActive_ = false; |
95 this.oldImageUrl_ = imageUrl; | 127 this.oldImageUrl_ = imageUrl; |
96 this.selectedImageUrl_ = imageUrl; | 128 this.selectedImageUrl_ = imageUrl; |
97 }.bind(this), | 129 }.bind(this), |
98 | 130 |
99 /** | 131 /** |
100 * Called from C++ to provide the URL of the profile image. | 132 * Called from C++ to provide the URL of the profile image. |
101 * @param {string} imageUrl | 133 * @param {string} imageUrl |
102 * @param {boolean} selected | 134 * @param {boolean} selected |
103 */ | 135 */ |
104 receiveProfileImage: function(imageUrl, selected) { | 136 receiveProfileImage: function(imageUrl, selected) { |
105 this.profileImageUrl_ = imageUrl; | 137 this.profileImageUrl_ = imageUrl; |
106 if (selected) | 138 if (selected) { |
| 139 this.cameraActive_ = false; |
107 this.selectedImageUrl_ = imageUrl; | 140 this.selectedImageUrl_ = imageUrl; |
| 141 } |
108 }.bind(this), | 142 }.bind(this), |
109 | 143 |
110 /** | 144 /** |
111 * Called from the C++ to notify page about camera presence. | 145 * Called from the C++ to notify page about camera presence. |
112 * @param {boolean} cameraPresent | 146 * @param {boolean} cameraPresent |
113 */ | 147 */ |
114 receiveCameraPresence: function(cameraPresent) { | 148 receiveCameraPresence: function(cameraPresent) { |
115 // TODO(tommycli): Implement camera functionality. | 149 // TODO(tommycli): Implement camera functionality. |
116 }.bind(this), | 150 }.bind(this), |
117 }; | 151 }; |
118 | 152 |
119 cr.define('settings', function() { | 153 cr.define('settings', function() { |
120 var ChangePicturePage = nativeInterface; | 154 var ChangePicturePage = nativeInterface; |
121 return { | 155 return { |
122 ChangePicturePage: ChangePicturePage, | 156 ChangePicturePage: ChangePicturePage, |
123 }; | 157 }; |
124 }); | 158 }); |
125 | 159 |
126 settings.ChangePicturePrivateApi.initialize(); | 160 settings.ChangePicturePrivateApi.initialize(); |
127 }, | 161 }, |
128 | 162 |
129 /** | 163 /** |
| 164 * Handler for when the user clicks the camera image. |
| 165 * @private |
| 166 */ |
| 167 onCameraImageTap_: function() { |
| 168 this.cameraActive_ = true; |
| 169 }, |
| 170 |
| 171 /** |
130 * Handler for when the user clicks a new profile image. | 172 * Handler for when the user clicks a new profile image. |
131 * @private | 173 * @private |
132 * @param {!Event} event | 174 * @param {!Event} event |
133 */ | 175 */ |
134 onDefaultImageTap_: function(event) { | 176 onDefaultImageTap_: function(event) { |
135 var element = Polymer.dom(event).rootTarget; | 177 var element = Polymer.dom(event).rootTarget; |
136 | 178 |
137 var imageUrl = null; | 179 var imageUrl = null; |
138 if (element.nodeName == 'IMG') | 180 if (element.nodeName == 'IMG') |
139 imageUrl = element.src; | 181 imageUrl = element.src; |
(...skipping 29 matching lines...) Expand all Loading... |
169 event.preventDefault(); | 211 event.preventDefault(); |
170 }, | 212 }, |
171 | 213 |
172 /** | 214 /** |
173 * Computed binding determining which profile image button is toggled on. | 215 * Computed binding determining which profile image button is toggled on. |
174 * @private | 216 * @private |
175 * @param {string} imageUrl | 217 * @param {string} imageUrl |
176 * @param {string} selectedImageUrl | 218 * @param {string} selectedImageUrl |
177 * @return {boolean} | 219 * @return {boolean} |
178 */ | 220 */ |
179 isActiveImage_: function(imageUrl, selectedImageUrl) { | 221 isActiveImage_: function(cameraActive, imageUrl, selectedImageUrl) { |
180 return imageUrl == selectedImageUrl; | 222 return !cameraActive && (imageUrl == selectedImageUrl); |
181 }, | 223 }, |
182 }); | 224 }); |
OLD | NEW |