Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <script src=../../../../resources/testharness.js></script> | 2 <script src=../../../../resources/testharness.js></script> |
| 3 <script src=../../../../resources/testharnessreport.js></script> | 3 <script src=../../../../resources/testharnessreport.js></script> |
| 4 <script> | 4 <script> |
| 5 | 5 |
| 6 // http:// resources are considered cross-origin from the current file://. | 6 // http:// resources are considered cross-origin from the current file://. |
| 7 const IMAGE_URL = "http://localhost:8080/security/resources/abe.png"; | 7 const IMAGE_URL = "http://localhost:8080/security/resources/abe.png"; |
| 8 const VIDEO_URL = "http://localhost:8080/imported/wpt/media/white.webm"; | |
| 8 | 9 |
| 9 // TODO(xianglu): Move this helper function to a shared location for reuse. | 10 // Returns a Promise that is resolve()d if detect() is rejected. Needs an input |
| 10 function detectFaceOnImageElementAndExpectError(imageUrl) { | 11 // |element| (e.g. an HTMLImageElement or HTMLVideoElement) and a |url| to load. |
| 12 function detectFaceOnElementAndExpectError(element, url) { | |
| 11 return new Promise(function(resolve, reject) { | 13 return new Promise(function(resolve, reject) { |
| 12 var image = new Image(); | |
| 13 var tryFaceDetection = function() { | 14 var tryFaceDetection = function() { |
| 14 var faceDetector = new FaceDetector(); | 15 var faceDetector = new FaceDetector(); |
| 15 faceDetector.detect(image) | 16 faceDetector.detect(element) |
| 16 .then(faceDetectionResult => { | 17 .then(faceDetectionResult => { |
| 17 reject("Promise should have been rejected."); | 18 reject("Promise should have been rejected."); |
| 18 }) | 19 }) |
| 19 .catch(error => { | 20 .catch(error => { |
| 20 resolve(error); | 21 resolve(error); |
| 21 }); | 22 }); |
| 22 }; | 23 }; |
| 23 image.onload = tryFaceDetection; | 24 element.onload = tryFaceDetection; |
| 24 image.onerror = tryFaceDetection; | 25 element.onerror = tryFaceDetection; |
| 25 image.src = imageUrl; | 26 element.src = url; |
| 26 }); | 27 }); |
| 27 } | 28 } |
| 28 | 29 |
| 29 function detectFaceOnImageBitmapAndExpectError(imageUrl) { | 30 function detectFaceOnImageBitmapAndExpectError(imageUrl) { |
| 30 return new Promise(function(resolve, reject) { | 31 return new Promise(function(resolve, reject) { |
| 31 var image = new Image(); | 32 var image = new Image(); |
| 32 image.onload = function() { | 33 image.onload = function() { |
| 33 createImageBitmap(image) | 34 createImageBitmap(image) |
| 34 .then(imageBitmap => { | 35 .then(imageBitmap => { |
| 35 var faceDetector = new FaceDetector(); | 36 var faceDetector = new FaceDetector(); |
| 36 return faceDetector.detect(imageBitmap); | 37 return faceDetector.detect(imageBitmap); |
| 37 }) | 38 }) |
| 38 .then(faceDetectionResult => { | 39 .then(faceDetectionResult => { |
| 39 reject("Promise should have been rejected."); | 40 reject("Promise should have been rejected."); |
| 40 }) | 41 }) |
| 41 .catch(error => { | 42 .catch(error => { |
| 42 resolve(error); | 43 resolve(error); |
| 43 }); | 44 }); |
| 44 }; | 45 }; |
| 45 image.onerror = () => {}; // Explicitly ignore expected error events. | 46 image.onerror = () => {}; // Explicitly ignore expected error events. |
|
xianglu
2016/10/31 23:07:52
For HTMLImageElement I remember only onerror() eve
mcasas
2016/11/01 01:10:58
Acknowledged.
| |
| 46 image.src = imageUrl; | 47 image.src = imageUrl; |
| 47 }); | 48 }); |
| 48 } | 49 } |
| 49 | 50 |
| 50 // Verifies that FaceDetector rejects a cross-origin HTMLImageElement. | 51 // Verifies that FaceDetector rejects a cross-origin HTMLImageElement. |
| 51 promise_test(function(t) { | 52 promise_test(function(t) { |
| 52 return detectFaceOnImageElementAndExpectError(IMAGE_URL) | 53 var image = new Image(); |
| 54 return detectFaceOnElementAndExpectError(image, IMAGE_URL) | |
| 53 .then(error => { | 55 .then(error => { |
| 54 assert_equals(error.name, "SecurityError"); | 56 assert_equals(error.name, "SecurityError"); |
| 55 }); | 57 }); |
| 56 }, | 58 }, |
| 57 "FaceDetector should reject cross-origin HTMLImageElements with a SecurityError. "); | 59 "FaceDetector should reject cross-origin HTMLImageElements with a SecurityError. "); |
| 58 | 60 |
| 59 // Verifies that FaceDetector rejects a cross-origin ImageBitmap. | 61 // Verifies that FaceDetector rejects a cross-origin ImageBitmap. |
| 60 promise_test(function(t) { | 62 promise_test(function(t) { |
| 61 return detectFaceOnImageBitmapAndExpectError(IMAGE_URL) | 63 return detectFaceOnImageBitmapAndExpectError(IMAGE_URL) |
| 62 .then(error => { | 64 .then(error => { |
| 63 assert_equals(error.name, "SecurityError"); | 65 assert_equals(error.name, "SecurityError"); |
| 64 }); | 66 }); |
| 65 }, | 67 }, |
| 66 "FaceDetector should reject cross-origin ImageBitmaps with a SecurityError."); | 68 "FaceDetector should reject cross-origin ImageBitmaps with a SecurityError."); |
| 67 | 69 |
| 70 // Verifies that FaceDetector rejects a cross-origin HTMLVideoElement. | |
| 71 promise_test(function(t) { | |
| 72 var video = document.createElement('video'); | |
| 73 return detectFaceOnElementAndExpectError(video, VIDEO_URL) | |
| 74 .then(error => { | |
| 75 assert_equals(error.name, "SecurityError"); | |
| 76 }); | |
| 77 }, | |
| 78 "FaceDetector should reject cross-origin HTMLImageElements with a SecurityError. "); | |
| 79 | |
| 68 </script> | 80 </script> |
| OLD | NEW |