Skip to content

Commit

Permalink
Shape Detection: add SaveSameObject idl to SameObject annotations
Browse files Browse the repository at this point in the history
This CL adds SaveSameObject to the SameObject annotation in idls,
following up to comments [1,2].

[1] https://codereview.chromium.org/2859413002/#msg27
[2] https://codereview.chromium.org/2859413002/#msg28

BUG=718693
TBR=haraken@chromium.org

Review-Url: https://codereview.chromium.org/2873453004
Cr-Commit-Position: refs/heads/master@{#471476}
  • Loading branch information
yell0wd0g authored and Commit bot committed May 12, 2017
1 parent 7534c70 commit fc059e0
Show file tree
Hide file tree
Showing 6 changed files with 97 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="../resources/mojo-helpers.js"></script>
<script src="resources/mock-barcodedetection.js"></script>
<script src="resources/mock-facedetection.js"></script>
<script src="resources/mock-textdetection.js"></script>
<script>

var createTestForImageData = function(createDetector, mockReady,
detectionResultTest) {
async_test(function(t) {

var img = new Image();
img.onload = function() {

var canvas = document.createElement("canvas");;
canvas.getContext("2d").drawImage(img, 0, 0);

var theMock = null;
mockReady()
.then(mock => {
theMock = mock;
var detector = createDetector();
return detector;
})
.catch(error => {
assert_unreached("Error creating Mock Detector: " + error);
})
.then(detector => {
return detector.detect(canvas.getContext("2d").getImageData(
0, 0, canvas.width, canvas.height));
})
.then(detectionResult => {
detectionResultTest(detectionResult);
t.done();
})
.catch(error => {
assert_unreached("Error during detect(canvas): " + error);
});
}

img.src = "../media/content/greenbox.png";
});
};

function CheckDetectedFaceSameObjects(detectedFaces) {
assert_greater_than(detectedFaces.length, 0, "Number of faces");
assert_equals(detectedFaces[0].boundingBox, detectedFaces[0].boundingBox);
assert_equals(detectedFaces[0].landmarks, detectedFaces[0].landmarks);
}

function CheckDetectedBarcodesSameObjects(detectedBarcodes) {
assert_greater_than(detectedBarcodes.length, 0, "Number of barcodes");
assert_equals(detectedBarcodes[0].rawValue, detectedBarcodes[0].rawValue);
assert_equals(detectedBarcodes[0].boundingBox, detectedBarcodes[0].boundingBox);
assert_equals(detectedBarcodes[0].cornerPoints, detectedBarcodes[0].cornerPoints);
}

function CheckDetectedTextBlocksSameObjects(detectedTextBlocks) {
assert_greater_than(detectedTextBlocks.length, 0, "Number of textBlocks");
assert_equals(detectedTextBlocks[0].rawValue, detectedTextBlocks[0].rawValue);
assert_equals(detectedTextBlocks[0].boundingBox, detectedTextBlocks[0].boundingBox);
}

// These tests verify that detect()ed Detected{Barcode,Face,Text}'s individual
// fields are [SameObject].
generate_tests(createTestForImageData, [
[
"Face - detect(ImageData), [SameObject]",
() => { return new FaceDetector(); },
() => { return mockFaceDetectionProviderReady; },
CheckDetectedFaceSameObjects
],
[
"Barcode - detect(ImageData), [SameObject]",
() => { return new BarcodeDetector(); },
() => { return mockBarcodeDetectionReady; },
CheckDetectedBarcodesSameObjects
],
[
"Text - detect(ImageData), [SameObject]",
() => { return new TextDetector(); },
() => { return mockTextDetectionReady; },
CheckDetectedTextBlocksSameObjects
]
]);

</script>
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@
[SameObject] readonly attribute DOMRect boundingBox;
// 4 corner points in clockwise direction starting with top-left. Due to
// possible perspective distortions, this is not necessarily a rectangle.
[SameObject] readonly attribute FrozenArray<Point2D> cornerPoints;
[SameObject, SaveSameObject] readonly attribute FrozenArray<Point2D> cornerPoints;
};
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ class MODULES_EXPORT DetectedFace final : public GarbageCollected<DetectedFace>,
explicit DetectedFace(DOMRect*);
DetectedFace(DOMRect*, const HeapVector<Landmark>&);

Member<DOMRect> bounding_box_;
HeapVector<Landmark> landmarks_;
const Member<DOMRect> bounding_box_;
const HeapVector<Landmark> landmarks_;
};

} // namespace blink
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
RuntimeEnabled=ShapeDetection,
] interface DetectedFace {
// TODO(xianglu): Implement any other fields. https://crbug.com/646083
readonly attribute DOMRect boundingBox;

[SameObject] readonly attribute FrozenArray<Landmark> landmarks;
[SameObject] readonly attribute DOMRect boundingBox;
[SameObject, SaveSameObject] readonly attribute FrozenArray<Landmark> landmarks;
};
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
Constructor,
RuntimeEnabled=ShapeDetection,
] interface DetectedText {
[SameObject] readonly attribute DOMRect boundingBox;
[SameObject] readonly attribute DOMString rawValue;
[SameObject] readonly attribute DOMRect boundingBox;
};
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ class ScriptWrappable;
X(NamedConstructor, Initialized) \
X(PerformanceObserver, Callback) \
X(PopStateEvent, State) \
X(SameObject, DetectedBarcodeCornerPoints) \
X(SameObject, DetectedFaceLandmarks) \
X(SameObject, NotificationActions) \
X(SameObject, NotificationData) \
X(SameObject, NotificationVibrate) \
Expand Down

0 comments on commit fc059e0

Please sign in to comment.