Commit 379f3578 authored by François Beaufort's avatar François Beaufort Committed by Commit Bot

[Shape Detection] Make DetectedBarcode interface serializable.

This CL makes sure DetectedBarcode interface is serializable so that
DetectedBarcode can easily be transfered from workers.

Change-Id: I539dfa2dcba7873ccad4df76b8531c797d88072c
Reviewed-on: https://chromium-review.googlesource.com/1246452Reviewed-by: default avatarMiguel Casas <mcasas@chromium.org>
Commit-Queue: François Beaufort <beaufort.francois@gmail.com>
Cr-Commit-Position: refs/heads/master@{#594633}
parent c405df54
......@@ -1427,6 +1427,7 @@ interface DetectedBarcode
getter cornerPoints
getter rawValue
method constructor
method toJSON
interface DetectedFace
attribute @@toStringTag
getter boundingBox
......
......@@ -4,6 +4,7 @@
#include "third_party/blink/renderer/modules/shapedetection/detected_barcode.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_object_builder.h"
#include "third_party/blink/renderer/core/geometry/dom_rect.h"
namespace blink {
......@@ -39,6 +40,21 @@ DetectedBarcode::DetectedBarcode(String raw_value,
bounding_box_(bounding_box),
corner_points_(corner_points) {}
ScriptValue DetectedBarcode::toJSONForBinding(ScriptState* script_state) const {
V8ObjectBuilder result(script_state);
result.AddString("rawValue", rawValue());
result.Add("boundingBox", boundingBox()->toJSONForBinding(script_state));
Vector<ScriptValue> corner_points;
for (const auto& corner_point : corner_points_) {
V8ObjectBuilder builder(script_state);
builder.AddNumber("x", corner_point.x());
builder.AddNumber("y", corner_point.y());
corner_points.push_back(builder.GetScriptValue());
}
result.Add("cornerPoints", corner_points);
return result.GetScriptValue();
}
void DetectedBarcode::Trace(blink::Visitor* visitor) {
visitor->Trace(bounding_box_);
visitor->Trace(corner_points_);
......
......@@ -5,6 +5,7 @@
#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_SHAPEDETECTION_DETECTED_BARCODE_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_SHAPEDETECTION_DETECTED_BARCODE_H_
#include "third_party/blink/renderer/bindings/core/v8/script_value.h"
#include "third_party/blink/renderer/modules/imagecapture/point_2d.h"
#include "third_party/blink/renderer/modules/modules_export.h"
#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
......@@ -24,6 +25,8 @@ class MODULES_EXPORT DetectedBarcode final : public ScriptWrappable {
const String& rawValue() const;
DOMRectReadOnly* boundingBox() const;
const HeapVector<Point2D>& cornerPoints() const;
ScriptValue toJSONForBinding(ScriptState*) const;
void Trace(blink::Visitor*) override;
private:
......
......@@ -14,4 +14,6 @@
// 4 corner points in clockwise direction starting with top-left. Due to
// possible perspective distortions, this is not necessarily a rectangle.
[SameObject, SaveSameObject] readonly attribute FrozenArray<Point2D> cornerPoints;
serializer = { attribute };
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment