Chromium Code Reviews| Index: third_party/WebKit/Source/modules/nfc/NFC.cpp |
| diff --git a/third_party/WebKit/Source/modules/nfc/NFC.cpp b/third_party/WebKit/Source/modules/nfc/NFC.cpp |
| index ac7a95cf4a12254dd5d38df80fa35a226e8a9eff..a986a5840cfe1362de9143f2dc7eb3d0b983ec0f 100644 |
| --- a/third_party/WebKit/Source/modules/nfc/NFC.cpp |
| +++ b/third_party/WebKit/Source/modules/nfc/NFC.cpp |
| @@ -426,7 +426,17 @@ bool setURL(const String& origin, |
| return originURL.isValid(); |
| } |
| -} // anonymous namespace |
| +size_t getNFCMessageSize( |
|
kenneth.r.christiansen
2016/11/22 13:11:23
measure instead of get?
|
| + const device::nfc::mojom::blink::NFCMessagePtr& message) { |
| + size_t messageSize = message->url.charactersSizeInBytes(); |
| + for (size_t i = 0; i < message->data.size(); ++i) { |
| + messageSize += message->data[i]->media_type.charactersSizeInBytes(); |
| + messageSize += message->data[i]->data.size(); |
| + } |
| + return messageSize; |
| +} |
| + |
| +} // namespace |
| NFC::NFC(LocalFrame* frame) |
| : PageVisibilityObserver(frame->page()), |
| @@ -488,6 +498,12 @@ ScriptPromise NFC::push(ScriptState* scriptState, |
| return ScriptPromise::rejectWithDOMException( |
| scriptState, DOMException::create(SyntaxError)); |
| + if (getNFCMessageSize(message) > |
| + device::nfc::mojom::blink::NFCMessage::kMaxSize) { |
| + return ScriptPromise::rejectWithDOMException( |
| + scriptState, DOMException::create(NotSupportedError)); |
| + } |
| + |
| ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
| m_requests.add(resolver); |
| auto callback = convertToBaseCallback(WTF::bind(&NFC::OnRequestCompleted, |