blob: b1d727b785c39ba46c2ea2b6f140a923111146e0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/modules/nfc/nfc_type_converters.h"
#include <limits>
#include <utility>
#include "services/device/public/mojom/nfc.mojom-blink.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_ndef_write_options.h"
#include "third_party/blink/renderer/modules/nfc/ndef_message.h"
#include "third_party/blink/renderer/modules/nfc/ndef_record.h"
#include "third_party/blink/renderer/modules/nfc/nfc_utils.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
using device::mojom::blink::NDEFMessage;
using device::mojom::blink::NDEFMessagePtr;
using device::mojom::blink::NDEFRecord;
using device::mojom::blink::NDEFRecordPtr;
using device::mojom::blink::NDEFWriteOptions;
using device::mojom::blink::NDEFWriteOptionsPtr;
// Mojo type converters
namespace mojo {
NDEFRecordPtr TypeConverter<NDEFRecordPtr, blink::NDEFRecord*>::Convert(
const blink::NDEFRecord* record) {
return NDEFRecord::New(
record->category(), record->recordType(), record->mediaType(),
record->id(), record->encoding(), record->lang(), record->payloadData(),
TypeConverter<NDEFMessagePtr, blink::NDEFMessage*>::Convert(
record->payload_message()));
}
NDEFMessagePtr TypeConverter<NDEFMessagePtr, blink::NDEFMessage*>::Convert(
const blink::NDEFMessage* message) {
// |message| may come from blink::NDEFRecord::payload_message() which is
// possible to be null for some "smart-poster" and external type records.
if (!message)
return nullptr;
NDEFMessagePtr message_ptr = NDEFMessage::New();
message_ptr->data.resize(message->records().size());
for (wtf_size_t i = 0; i < message->records().size(); ++i) {
NDEFRecordPtr record = NDEFRecord::From(message->records()[i].Get());
DCHECK(record);
message_ptr->data[i] = std::move(record);
}
return message_ptr;
}
NDEFWriteOptionsPtr
TypeConverter<NDEFWriteOptionsPtr, const blink::NDEFWriteOptions*>::Convert(
const blink::NDEFWriteOptions* write_options) {
// https://w3c.github.io/web-nfc/#the-ndefwriteoptions-dictionary
// Default values for NDEFWriteOptions dictionary are:
// overwrite = true
NDEFWriteOptionsPtr write_options_ptr = NDEFWriteOptions::New();
write_options_ptr->overwrite = write_options->overwrite();
return write_options_ptr;
}
} // namespace mojo
|