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

Unified Diff: chrome/test/data/extensions/api_test/file_manager_browsertest/gallery/photo_editor.js

Issue 348553002: Gallery: Add browser tests to apply the exposure effect for an image. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 6 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/test/data/extensions/api_test/file_manager_browsertest/gallery/photo_editor.js
diff --git a/chrome/test/data/extensions/api_test/file_manager_browsertest/gallery/photo_editor.js b/chrome/test/data/extensions/api_test/file_manager_browsertest/gallery/photo_editor.js
index 0de4a9c1be5e938546f259fe6cbda7842b16f30b..2140fa6314f570f99c8e306e1f18095cf1b6b322 100644
--- a/chrome/test/data/extensions/api_test/file_manager_browsertest/gallery/photo_editor.js
+++ b/chrome/test/data/extensions/api_test/file_manager_browsertest/gallery/photo_editor.js
@@ -5,6 +5,20 @@
'use strict';
/**
+ * Waits for the "Press Enter" message.
+ *
+ * @param {AppWindow} appWindow App window.
+ * @return {Promise} Promise to be fulfilled when the element appears.
+ */
+function waitForPressEnterMessage(appWindow) {
+ return waitForElement(appWindow, '.prompt-wrapper .prompt').
+ then(function(element) {
+ chrome.test.assertEq(
+ 'Press Enter when done', element.innerText.trim());
+ });
+}
+
+/**
* Prepares the photo editor.
*
* @param {string} testVolumeName Test volume name passed to the addEntries
@@ -89,14 +103,10 @@ function cropImage(testVolumeName, volumeType) {
var appWindow = args.appWindow;
return waitAndClickElement(appWindow, '.gallery:not([locked]) button.crop').
then(function() {
- var promptPromise =
- waitForElement(appWindow, '.prompt-wrapper .prompt').
- then(function(element) {
- chrome.test.assertEq(
- 'Press Enter when done', element.innerText.trim());
- });
- var cropOverlay = waitForElement(appWindow, '.crop-overlay');
- return Promise.all([promptPromise, cropOverlay]);
+ return Promise.all([
+ waitForPressEnterMessage(appWindow),
+ waitForElement(appWindow, '.crop-overlay')
+ ]);
}).
then(function() {
chrome.test.assertTrue(sendKeyDown(appWindow, 'body', 'Enter'));
@@ -118,6 +128,77 @@ function cropImage(testVolumeName, volumeType) {
}
/**
+ * Obtains metadata from an entry.
+ *
+ * @param {Entry} entry Entry.
+ * @return {Promise} Promise to be fulfilled with the result metadata.
+ */
+function getMetadata(entry) {
+ return new Promise(entry.getMetadata.bind(entry));
+}
+
+/**
+ * Tests to exposure an image.
+ *
+ * @param {string} testVolumeName Test volume name passed to the addEntries
+ * function. Either 'drive' or 'local'.
+ * @param {VolumeManagerCommon.VolumeType} volumeType Volume type.
+ * @return {Promise} Promise to be fulfilled with on success.
+ */
+function exposureImage(testVolumeName, volumeType) {
+ var launchedPromise = setupPhotoEditor(testVolumeName, volumeType);
+ return launchedPromise.then(function(args) {
+ var appWindow = args.appWindow;
+ var entry = args.entries[0];
+ var buttonQuery = '.gallery:not([locked]) button.exposure';
+
+ // Click the exposure button.
+ return waitAndClickElement(appWindow, buttonQuery).then(function() {
+ // Wait until the edit controls appear.
+ return Promise.all([
+ waitForPressEnterMessage(appWindow),
+ waitForElement(appWindow, 'input.range[name="brightness"]'),
+ waitForElement(appWindow, 'input.range[name="contrast"]'),
+ ]);
+ }).then(function(results) {
+ // Update bright.
+ var brightnessRange = results[1];
+ brightnessRange.value = 20;
+ chrome.test.assertTrue(
+ brightnessRange.dispatchEvent(new Event('change')));
+
+ // Update contrast.
+ var contrastRange = results[2];
+ contrastRange.value = -20;
+ chrome.test.assertTrue(
+ contrastRange.dispatchEvent(new Event('change')));
+
+ return getMetadata(entry).then(function(firstMetadata) {
+ // Push the Enter key.
+ chrome.test.assertTrue(sendKeyDown(appWindow, 'body', 'Enter'));
+
+ // Wait until the image is updated.
+ return repeatUntil(function() {
+ return getMetadata(entry).then(function(secondMetadata) {
+ if (firstMetadata.modificationTime !=
+ secondMetadata.modificationTime) {
+ return true;
+ } else {
+ return pending(
+ '%s is not updated. ' +
+ 'First last modified: %s, Second last modified: %s.',
+ entry.name,
+ firstMetadata.modificationTime.toString(),
+ secondMetadata.modificationTime.toString());
+ }
+ });
+ });
+ });
+ });
+ });
+}
+
+/**
* The rotateImage test for Downloads.
* @return {Promise} Promise to be fulfilled with on success.
*/
@@ -148,3 +229,19 @@ function cropImageOnDownloads() {
function cropImageOnDrive() {
return cropImage('drive', VolumeManagerCommon.VolumeType.DRIVE);
}
+
+/**
+ * The exposureImage test for Downloads.
+ * @return {Promise} Promise to be fulfilled with on success.
+ */
+function exposureImageOnDownloads() {
+ return exposureImage('local', VolumeManagerCommon.VolumeType.DOWNLOADS);
+}
+
+/**
+ * The exposureImage test for Google Drive.
+ * @return {Promise} Promise to be fulfilled with on success.
+ */
+function exposureImageOnDrive() {
+ return exposureImage('drive', VolumeManagerCommon.VolumeType.DRIVE);
+}

Powered by Google App Engine
This is Rietveld 408576698