Index: chrome/browser/ui/webui/chromeos/nfc_debug_ui.cc |
diff --git a/chrome/browser/ui/webui/chromeos/nfc_debug_ui.cc b/chrome/browser/ui/webui/chromeos/nfc_debug_ui.cc |
deleted file mode 100644 |
index cf038f398f011f568688379d3a3d7738e89bd3a4..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/webui/chromeos/nfc_debug_ui.cc |
+++ /dev/null |
@@ -1,744 +0,0 @@ |
-// Copyright 2014 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 "chrome/browser/ui/webui/chromeos/nfc_debug_ui.h" |
- |
-#include "base/bind.h" |
-#include "base/bind_helpers.h" |
-#include "base/macros.h" |
-#include "base/values.h" |
-#include "chrome/browser/profiles/profile.h" |
-#include "chrome/common/url_constants.h" |
-#include "chrome/grit/browser_resources.h" |
-#include "chrome/grit/generated_resources.h" |
-#include "content/public/browser/web_ui.h" |
-#include "content/public/browser/web_ui_data_source.h" |
-#include "content/public/browser/web_ui_message_handler.h" |
-#include "device/nfc/nfc_adapter.h" |
-#include "device/nfc/nfc_adapter_factory.h" |
-#include "device/nfc/nfc_peer.h" |
-#include "device/nfc/nfc_tag.h" |
- |
-using device::NfcAdapter; |
-using device::NfcAdapterFactory; |
-using device::NfcNdefMessage; |
-using device::NfcNdefRecord; |
-using device::NfcNdefTagTechnology; |
-using device::NfcPeer; |
-using device::NfcTag; |
-using device::NfcTagTechnology; |
- |
-namespace chromeos { |
- |
-namespace { |
- |
-// Keys for various NFC properties that are used by JS. |
-const char kAdapterPeersProperty[] = "peers"; |
-const char kAdapterPollingProperty[] = "polling"; |
-const char kAdapterPoweredProperty[] = "powered"; |
-const char kAdapterPresentProperty[] = "present"; |
-const char kAdapterTagsProperty[] = "tags"; |
- |
-const char kPeerIdentifierProperty[] = "identifier"; |
-const char kPeerRecordsProperty[] = "records"; |
- |
-const char kTagIdentifierProperty[] = "identifier"; |
-const char kTagTypeProperty[] = "type"; |
-const char kTagReadOnlyProperty[] = "readOnly"; |
-const char kTagRecordsProperty[] = "records"; |
-const char kTagSupportedProtocolProperty[] = "supportedProtocol"; |
-const char kTagSupportedTechnologiesProperty[] = "supportedTechnologies"; |
-const char kRecordTypeProperty[] = "type"; |
- |
-// Tag types. |
-const char kTagType1[] = "TYPE-1"; |
-const char kTagType2[] = "TYPE-2"; |
-const char kTagType3[] = "TYPE-3"; |
-const char kTagType4[] = "TYPE-4"; |
-const char kTagTypeUnknown[] = "UNKNOWN"; |
- |
-// NFC transfer protocols. |
-const char kTagProtocolFelica[] = "FELICA"; |
-const char kTagProtocolIsoDep[] = "ISO-DEP"; |
-const char kTagProtocolJewel[] = "JEWEL"; |
-const char kTagProtocolMifare[] = "MIFARE"; |
-const char kTagProtocolNfcDep[] = "NFC-DEP"; |
-const char kTagProtocolUnknown[] = "UNKNOWN"; |
- |
-// NFC tag technologies. |
-const char kTagTechnologyNfcA[] = "NFC-A"; |
-const char kTagTechnologyNfcB[] = "NFC-B"; |
-const char kTagTechnologyNfcF[] = "NFC-F"; |
-const char kTagTechnologyNfcV[] = "NFC-V"; |
-const char kTagTechnologyIsoDep[] = "ISO-DEP"; |
-const char kTagTechnologyNdef[] = "NDEF"; |
- |
-// NDEF types. |
-const char kTypeHandoverCarrier[] = "HANDOVER_CARRIER"; |
-const char kTypeHandoverRequest[] = "HANDOVER_REQUEST"; |
-const char kTypeHandoverSelect[] = "HANDOVER_SELECT"; |
-const char kTypeSmartPoster[] = "SMART_POSTER"; |
-const char kTypeText[] = "TEXT"; |
-const char kTypeURI[] = "URI"; |
-const char kTypeUnknown[] = "UNKNOWN"; |
- |
-// JavaScript callback constants. |
-const char kInitializeCallback[] = "initialize"; |
-const char kSetAdapterPowerCallback[] = "setAdapterPower"; |
-const char kSetAdapterPollingCallback[] = "setAdapterPolling"; |
-const char kSubmitRecordFormCallback[] = "submitRecordForm"; |
- |
-// Constants for JavaScript functions that we can call. |
-const char kOnNfcAdapterInfoChangedFunction[] = |
- "nfcDebug.NfcDebugUI.onNfcAdapterInfoChanged"; |
-const char kOnNfcAvailabilityDeterminedFunction[] = |
- "nfcDebug.NfcDebugUI.onNfcAvailabilityDetermined"; |
-const char kOnNfcPeerDeviceInfoChangedFunction[] = |
- "nfcDebug.NfcDebugUI.onNfcPeerDeviceInfoChanged"; |
-const char kOnNfcTagInfoChangedFunction[] = |
- "nfcDebug.NfcDebugUI.onNfcTagInfoChanged"; |
-const char kOnSetAdapterPollingFailedFunction[] = |
- "nfcDebug.NfcDebugUI.onSetAdapterPollingFailed"; |
-const char kOnSetAdapterPowerFailedFunction[] = |
- "nfcDebug.NfcDebugUI.onSetAdapterPowerFailed"; |
-const char kOnSubmitRecordFormFailedFunction[] = |
- "nfcDebug.NfcDebugUI.onSubmitRecordFormFailed"; |
- |
-std::string RecordTypeToString(NfcNdefRecord::Type type) { |
- switch (type) { |
- case NfcNdefRecord::kTypeHandoverCarrier: |
- return kTypeHandoverCarrier; |
- case NfcNdefRecord::kTypeHandoverRequest: |
- return kTypeHandoverRequest; |
- case NfcNdefRecord::kTypeHandoverSelect: |
- return kTypeHandoverSelect; |
- case NfcNdefRecord::kTypeSmartPoster: |
- return kTypeSmartPoster; |
- case NfcNdefRecord::kTypeText: |
- return kTypeText; |
- case NfcNdefRecord::kTypeURI: |
- return kTypeURI; |
- case NfcNdefRecord::kTypeUnknown: |
- return kTypeUnknown; |
- } |
- return kTypeUnknown; |
-} |
- |
-NfcNdefRecord::Type RecordTypeStringValueToEnum(const std::string& type) { |
- if (type == kTypeHandoverCarrier) |
- return NfcNdefRecord::kTypeHandoverCarrier; |
- if (type == kTypeHandoverRequest) |
- return NfcNdefRecord::kTypeHandoverRequest; |
- if (type == kTypeHandoverSelect) |
- return NfcNdefRecord::kTypeHandoverSelect; |
- if (type == kTypeSmartPoster) |
- return NfcNdefRecord::kTypeSmartPoster; |
- if (type == kTypeText) |
- return NfcNdefRecord::kTypeText; |
- if (type == kTypeURI) |
- return NfcNdefRecord::kTypeURI; |
- return NfcNdefRecord::kTypeUnknown; |
-} |
- |
-std::string TagTypeToString(NfcTag::TagType type) { |
- switch (type) { |
- case NfcTag::kTagType1: |
- return kTagType1; |
- case NfcTag::kTagType2: |
- return kTagType2; |
- case NfcTag::kTagType3: |
- return kTagType3; |
- case NfcTag::kTagType4: |
- return kTagType4; |
- case NfcTag::kTagTypeUnknown: |
- return kTagTypeUnknown; |
- } |
- return kTagTypeUnknown; |
-} |
- |
-std::string TagProtocolToString(NfcTag::Protocol protocol) { |
- switch (protocol) { |
- case NfcTag::kProtocolFelica: |
- return kTagProtocolFelica; |
- case NfcTag::kProtocolIsoDep: |
- return kTagProtocolIsoDep; |
- case NfcTag::kProtocolJewel: |
- return kTagProtocolJewel; |
- case NfcTag::kProtocolMifare: |
- return kTagProtocolMifare; |
- case NfcTag::kProtocolNfcDep: |
- return kTagProtocolNfcDep; |
- case NfcTag::kProtocolUnknown: |
- return kTagProtocolUnknown; |
- } |
- return kTagProtocolUnknown; |
-} |
- |
-// content::WebUIMessageHandler implementation for this page. |
-class NfcDebugMessageHandler : public content::WebUIMessageHandler, |
- public NfcAdapter::Observer, |
- public NfcNdefTagTechnology::Observer, |
- public NfcPeer::Observer, |
- public NfcTag::Observer { |
- public: |
- NfcDebugMessageHandler(); |
- ~NfcDebugMessageHandler() override; |
- |
- // WebUIMessageHandler implementation. |
- void RegisterMessages() override; |
- |
- // NfcAdapter::Observer overrides. |
- void AdapterPresentChanged(NfcAdapter* adapter, bool present) override; |
- void AdapterPoweredChanged(NfcAdapter* adapter, bool powered) override; |
- void AdapterPollingChanged(NfcAdapter* adapter, bool polling) override; |
- void TagFound(NfcAdapter* adapter, NfcTag* tag) override; |
- void TagLost(NfcAdapter* adapter, NfcTag* tag) override; |
- void PeerFound(NfcAdapter* adaper, NfcPeer* peer) override; |
- void PeerLost(NfcAdapter* adapter, NfcPeer* peer) override; |
- |
- // NfcNdefTagTechnology::Observer override. |
- void RecordReceived(NfcTag* tag, const NfcNdefRecord* record) override; |
- |
- // NfcPeer::Observer override. |
- void RecordReceived(NfcPeer* peer, const NfcNdefRecord* record) override; |
- |
- // NfcTag::Observer override. |
- void TagReady(NfcTag* tag) override; |
- |
- private: |
- // Called by the UI when the page loads. This method requests information |
- // about NFC availability on the current platform and requests the underlying |
- // Adapter object. The UI is notified once the information is available. |
- void Initialize(const base::ListValue* args); |
- |
- // Called by the UI to toggle the adapter power. |args| will contain one |
- // boolean that indicates whether the power should be set to ON or OFF. |
- void SetAdapterPower(const base::ListValue* args); |
- void OnSetAdapterPowerError(); |
- |
- // Called by the UI set the adapter's poll status. |args| will contain one |
- // boolean that indicates whether polling should be started or stopped. |
- void SetAdapterPolling(const base::ListValue* args); |
- void OnSetAdapterPollingError(); |
- |
- // Called by the UI to push an NDEF record to a remote device or tag. |args| |
- // will contain one dictionary that contains the record data. |
- void SubmitRecordForm(const base::ListValue* args); |
- void OnSubmitRecordFormFailed(const std::string& error_message); |
- |
- // Callback passed to NfcAdapterFactory::GetAdapter. |
- void OnGetAdapter(scoped_refptr<NfcAdapter> adapter); |
- |
- // Stores the properties of the NFC adapter in |out|, mapping these to keys |
- // that will be read by JS. |
- void GetAdapterProperties(base::DictionaryValue* out); |
- |
- // Stores the properties of the NFC peer in |out|, mapping these to keys |
- // that will be read by JS. |out| will not be modified, if no peer is known. |
- void GetPeerProperties(base::DictionaryValue* out); |
- |
- // Stores the properties of the NFC tag in |out|, mapping these to keys |
- // that will be read by JS. |out| will not be modified, if no tag is known. |
- void GetTagProperties(base::DictionaryValue* out); |
- |
- // Returns the records in |message| by populating |out|, in which |
- // they have been converted to a JS friendly format. |
- void GetRecordList(const NfcNdefMessage& message, base::ListValue* out); |
- |
- // Updates the data displayed in the UI for the current adapter. |
- void UpdateAdapterInfo(); |
- |
- // Updates the data displayed in the UI for the current peer. |
- void UpdatePeerInfo(); |
- |
- // Updates the data displayed in the UI for the current tag. |
- void UpdateTagInfo(); |
- |
- // The NfcAdapter object. |
- scoped_refptr<NfcAdapter> nfc_adapter_; |
- |
- // The cached identifier of the most recent NFC peer device found. |
- std::string peer_identifier_; |
- |
- // The cached identifier of the most recent NFC tag found. |
- std::string tag_identifier_; |
- |
- DISALLOW_COPY_AND_ASSIGN(NfcDebugMessageHandler); |
-}; |
- |
-NfcDebugMessageHandler::NfcDebugMessageHandler() { |
-} |
- |
-NfcDebugMessageHandler::~NfcDebugMessageHandler() { |
- if (!nfc_adapter_.get()) |
- return; |
- nfc_adapter_->RemoveObserver(this); |
- if (!peer_identifier_.empty()) { |
- NfcPeer* peer = nfc_adapter_->GetPeer(peer_identifier_); |
- if (peer) |
- peer->RemoveObserver(this); |
- } |
- if (!tag_identifier_.empty()) { |
- NfcTag* tag = nfc_adapter_->GetTag(tag_identifier_); |
- if (tag) |
- tag->RemoveObserver(this); |
- } |
-} |
- |
-void NfcDebugMessageHandler::AdapterPresentChanged( |
- NfcAdapter* adapter, |
- bool present) { |
- UpdateAdapterInfo(); |
-} |
- |
-void NfcDebugMessageHandler::AdapterPoweredChanged( |
- NfcAdapter* adapter, |
- bool powered) { |
- UpdateAdapterInfo(); |
-} |
- |
-void NfcDebugMessageHandler::AdapterPollingChanged( |
- NfcAdapter* adapter, |
- bool polling) { |
- UpdateAdapterInfo(); |
-} |
- |
-void NfcDebugMessageHandler::TagFound(NfcAdapter* adapter, NfcTag* tag) { |
- VLOG(1) << "Found NFC tag: " << tag->GetIdentifier(); |
- tag->AddObserver(this); |
- tag_identifier_ = tag->GetIdentifier(); |
- tag->GetNdefTagTechnology()->AddObserver(this); |
- UpdateAdapterInfo(); |
- UpdateTagInfo(); |
-} |
- |
-void NfcDebugMessageHandler::TagLost(NfcAdapter*adapter, NfcTag* tag) { |
- VLOG(1) << "Lost NFC tag: " << tag->GetIdentifier(); |
- tag->RemoveObserver(this); |
- tag->GetNdefTagTechnology()->RemoveObserver(this); |
- tag_identifier_.clear(); |
- UpdateAdapterInfo(); |
- UpdateTagInfo(); |
-} |
- |
-void NfcDebugMessageHandler::PeerFound(NfcAdapter* adaper, NfcPeer* peer) { |
- VLOG(1) << "Found NFC peer device: " << peer->GetIdentifier(); |
- peer->AddObserver(this); |
- peer_identifier_ = peer->GetIdentifier(); |
- UpdateAdapterInfo(); |
- UpdatePeerInfo(); |
-} |
- |
-void NfcDebugMessageHandler::PeerLost(NfcAdapter* adapter, NfcPeer* peer) { |
- VLOG(1) << "Lost NFC peer device: " << peer->GetIdentifier(); |
- peer->RemoveObserver(this); |
- peer_identifier_.clear(); |
- UpdateAdapterInfo(); |
- UpdatePeerInfo(); |
-} |
- |
-void NfcDebugMessageHandler::RecordReceived( |
- NfcTag* tag, |
- const NfcNdefRecord* record) { |
- if (tag->GetIdentifier() != tag_identifier_) { |
- LOG(WARNING) << "Records received from unknown tag: " |
- << tag->GetIdentifier(); |
- return; |
- } |
- UpdateTagInfo(); |
-} |
- |
-void NfcDebugMessageHandler::RecordReceived( |
- NfcPeer* peer, |
- const NfcNdefRecord* record) { |
- if (peer->GetIdentifier() != peer_identifier_) { |
- LOG(WARNING) << "Records received from unknown peer: " |
- << peer->GetIdentifier(); |
- return; |
- } |
- UpdatePeerInfo(); |
-} |
- |
-void NfcDebugMessageHandler::TagReady(NfcTag* tag) { |
- if (tag_identifier_ != tag->GetIdentifier()) { |
- LOG(WARNING) << "Unknown tag became ready: " << tag->GetIdentifier(); |
- return; |
- } |
- VLOG(1) << "Tag ready: " << tag->GetIdentifier(); |
- UpdateTagInfo(); |
-} |
- |
-void NfcDebugMessageHandler::RegisterMessages() { |
- web_ui()->RegisterMessageCallback( |
- kInitializeCallback, |
- base::Bind(&NfcDebugMessageHandler::Initialize, |
- base::Unretained(this))); |
- web_ui()->RegisterMessageCallback( |
- kSetAdapterPowerCallback, |
- base::Bind(&NfcDebugMessageHandler::SetAdapterPower, |
- base::Unretained(this))); |
- web_ui()->RegisterMessageCallback( |
- kSetAdapterPollingCallback, |
- base::Bind(&NfcDebugMessageHandler::SetAdapterPolling, |
- base::Unretained(this))); |
- web_ui()->RegisterMessageCallback( |
- kSubmitRecordFormCallback, |
- base::Bind(&NfcDebugMessageHandler::SubmitRecordForm, |
- base::Unretained(this))); |
-} |
- |
-void NfcDebugMessageHandler::Initialize(const base::ListValue* args) { |
- bool nfc_available = NfcAdapterFactory::IsNfcAvailable(); |
- base::FundamentalValue available(nfc_available); |
- web_ui()->CallJavascriptFunctionUnsafe(kOnNfcAvailabilityDeterminedFunction, |
- available); |
- if (!nfc_available) { |
- LOG(WARNING) << "NFC is not available on current platform."; |
- return; |
- } |
- NfcAdapterFactory::GetAdapter( |
- base::Bind(&NfcDebugMessageHandler::OnGetAdapter, |
- base::Unretained(this))); |
-} |
- |
-void NfcDebugMessageHandler::SetAdapterPower(const base::ListValue* args) { |
- DCHECK(1 == args->GetSize()); |
- DCHECK(nfc_adapter_.get()); |
- bool powered; |
- args->GetBoolean(0, &powered); |
- VLOG(1) << "Setting adapter power: " << powered; |
- nfc_adapter_->SetPowered( |
- powered, base::Bind(&base::DoNothing), |
- base::Bind(&NfcDebugMessageHandler::OnSetAdapterPowerError, |
- base::Unretained(this))); |
-} |
- |
-void NfcDebugMessageHandler::OnSetAdapterPowerError() { |
- LOG(ERROR) << "Failed to set NFC adapter power."; |
- web_ui()->CallJavascriptFunctionUnsafe(kOnSetAdapterPowerFailedFunction); |
-} |
- |
-void NfcDebugMessageHandler::SetAdapterPolling(const base::ListValue* args) { |
- DCHECK(1 == args->GetSize()); |
- DCHECK(nfc_adapter_.get()); |
- bool start = false; |
- bool result = args->GetBoolean(0, &start); |
- DCHECK(result); |
- if (start) { |
- VLOG(1) << "Starting NFC poll loop."; |
- nfc_adapter_->StartPolling( |
- base::Bind(&base::DoNothing), |
- base::Bind(&NfcDebugMessageHandler::OnSetAdapterPollingError, |
- base::Unretained(this))); |
- } else { |
- VLOG(1) << "Stopping NFC poll loop."; |
- nfc_adapter_->StopPolling( |
- base::Bind(&base::DoNothing), |
- base::Bind(&NfcDebugMessageHandler::OnSetAdapterPollingError, |
- base::Unretained(this))); |
- } |
-} |
- |
-void NfcDebugMessageHandler::OnSetAdapterPollingError() { |
- LOG(ERROR) << "Failed to start/stop polling."; |
- web_ui()->CallJavascriptFunctionUnsafe(kOnSetAdapterPollingFailedFunction); |
-} |
- |
-void NfcDebugMessageHandler::SubmitRecordForm(const base::ListValue* args) { |
- DCHECK(1 == args->GetSize()); |
- DCHECK(nfc_adapter_.get()); |
- const base::DictionaryValue* record_data_const = NULL; |
- if (!args->GetDictionary(0, &record_data_const)) { |
- NOTREACHED(); |
- return; |
- } |
- |
- if (peer_identifier_.empty() && tag_identifier_.empty()) { |
- OnSubmitRecordFormFailed("No peer or tag present."); |
- return; |
- } |
- |
- std::string type; |
- if (!record_data_const->GetString(kRecordTypeProperty, &type)) { |
- OnSubmitRecordFormFailed("Record type not provided."); |
- return; |
- } |
- |
- base::DictionaryValue* record_data = record_data_const->DeepCopy(); |
- record_data->Remove(kRecordTypeProperty, NULL); |
- |
- // Convert the "targetSize" field to a double, in case JS stored it as an |
- // integer. |
- int target_size; |
- if (record_data->GetInteger(NfcNdefRecord::kFieldTargetSize, &target_size)) { |
- record_data->SetDouble(NfcNdefRecord::kFieldTargetSize, |
- static_cast<double>(target_size)); |
- } |
- |
- NfcNdefRecord record; |
- if (!record.Populate(RecordTypeStringValueToEnum(type), record_data)) { |
- OnSubmitRecordFormFailed("Invalid record data provided. Missing required " |
- "fields?"); |
- return; |
- } |
- |
- if (!peer_identifier_.empty()) { |
- NfcPeer* peer = nfc_adapter_->GetPeer(peer_identifier_); |
- if (!peer) { |
- OnSubmitRecordFormFailed("The current NFC adapter doesn't seem to know " |
- "about peer: " + peer_identifier_); |
- return; |
- } |
- NfcNdefMessage message; |
- message.AddRecord(&record); |
- peer->PushNdef(message, |
- base::Bind(&base::DoNothing), |
- base::Bind(&NfcDebugMessageHandler::OnSubmitRecordFormFailed, |
- base::Unretained(this), |
- "Failed to push NDEF record.")); |
- return; |
- } |
- NfcTag* tag = nfc_adapter_->GetTag(tag_identifier_); |
- if (!tag) { |
- OnSubmitRecordFormFailed("The current NFC tag doesn't seem to known about " |
- "tag: " + tag_identifier_); |
- return; |
- } |
- NfcNdefMessage message; |
- message.AddRecord(&record); |
- tag->GetNdefTagTechnology()->WriteNdef( |
- message, |
- base::Bind(&base::DoNothing), |
- base::Bind(&NfcDebugMessageHandler::OnSubmitRecordFormFailed, |
- base::Unretained(this), |
- "Failed to write NDEF record.")); |
-} |
- |
-void NfcDebugMessageHandler::OnSubmitRecordFormFailed( |
- const std::string& error_message) { |
- LOG(ERROR) << "SubmitRecordForm failed: " << error_message; |
- web_ui()->CallJavascriptFunctionUnsafe(kOnSubmitRecordFormFailedFunction, |
- base::StringValue(error_message)); |
-} |
- |
-void NfcDebugMessageHandler::OnGetAdapter( |
- scoped_refptr<NfcAdapter> adapter) { |
- if (nfc_adapter_.get()) |
- return; |
- nfc_adapter_ = adapter; |
- nfc_adapter_->AddObserver(this); |
- UpdateAdapterInfo(); |
- |
- NfcAdapter::PeerList peers; |
- nfc_adapter_->GetPeers(&peers); |
- for (NfcAdapter::PeerList::const_iterator iter = peers.begin(); |
- iter != peers.end(); ++iter) { |
- PeerFound(nfc_adapter_.get(), *iter); |
- } |
- |
- NfcAdapter::TagList tags; |
- nfc_adapter_->GetTags(&tags); |
- for (NfcAdapter::TagList::const_iterator iter = tags.begin(); |
- iter != tags.end(); ++iter) { |
- TagFound(nfc_adapter_.get(), *iter); |
- } |
-} |
- |
-void NfcDebugMessageHandler::GetAdapterProperties( |
- base::DictionaryValue* out) { |
- if (!nfc_adapter_.get()) { |
- VLOG(1) << "NFC adapter hasn't been received yet."; |
- return; |
- } |
- out->SetBoolean(kAdapterPresentProperty, nfc_adapter_->IsPresent()); |
- out->SetBoolean(kAdapterPollingProperty, nfc_adapter_->IsPolling()); |
- out->SetBoolean(kAdapterPoweredProperty, nfc_adapter_->IsPowered()); |
- |
- NfcAdapter::PeerList peers; |
- nfc_adapter_->GetPeers(&peers); |
- out->SetInteger(kAdapterPeersProperty, static_cast<int>(peers.size())); |
- |
- NfcAdapter::TagList tags; |
- nfc_adapter_->GetTags(&tags); |
- out->SetInteger(kAdapterTagsProperty, static_cast<int>(tags.size())); |
-} |
- |
-void NfcDebugMessageHandler::GetPeerProperties(base::DictionaryValue* out) { |
- if (peer_identifier_.empty()) { |
- VLOG(1) << "No known peer exists."; |
- return; |
- } |
- if (!nfc_adapter_.get()) { |
- VLOG(1) << "NFC adapter hasn't been received yet."; |
- return; |
- } |
- NfcPeer* peer = nfc_adapter_->GetPeer(peer_identifier_); |
- if (!peer) { |
- LOG(ERROR) << "The current NFC adapter doesn't seem to know about peer: " |
- << peer_identifier_; |
- return; |
- } |
- out->SetString(kPeerIdentifierProperty, peer_identifier_); |
- |
- base::ListValue* records = new base::ListValue(); |
- GetRecordList(peer->GetNdefMessage(), records); |
- out->Set(kPeerRecordsProperty, records); |
-} |
- |
-void NfcDebugMessageHandler::GetTagProperties(base::DictionaryValue* out) { |
- if (tag_identifier_.empty()) { |
- VLOG(1) << "No known tag exists."; |
- return; |
- } |
- if (!nfc_adapter_.get()) { |
- VLOG(1) << "NFC adapter hasn't been received yet."; |
- return; |
- } |
- NfcTag* tag = nfc_adapter_->GetTag(tag_identifier_); |
- if (!tag) { |
- LOG(ERROR) << "The current NFC adapter doesn't seem to know about tag: " |
- << tag_identifier_; |
- return; |
- } |
- out->SetString(kTagIdentifierProperty, tag_identifier_); |
- out->SetString(kTagTypeProperty, TagTypeToString(tag->GetType())); |
- out->SetBoolean(kTagReadOnlyProperty, tag->IsReadOnly()); |
- out->SetString(kTagSupportedProtocolProperty, |
- TagProtocolToString(tag->GetSupportedProtocol())); |
- |
- base::ListValue* technologies = new base::ListValue(); |
- NfcTagTechnology::TechnologyTypeMask technology_mask = |
- tag->GetSupportedTechnologies(); |
- if (technology_mask & NfcTagTechnology::kTechnologyTypeNfcA) |
- technologies->AppendString(kTagTechnologyNfcA); |
- if (technology_mask & NfcTagTechnology::kTechnologyTypeNfcB) |
- technologies->AppendString(kTagTechnologyNfcB); |
- if (technology_mask & NfcTagTechnology::kTechnologyTypeNfcF) |
- technologies->AppendString(kTagTechnologyNfcF); |
- if (technology_mask & NfcTagTechnology::kTechnologyTypeNfcV) |
- technologies->AppendString(kTagTechnologyNfcV); |
- if (technology_mask & NfcTagTechnology::kTechnologyTypeIsoDep) |
- technologies->AppendString(kTagTechnologyIsoDep); |
- if (technology_mask & NfcTagTechnology::kTechnologyTypeNdef) |
- technologies->AppendString(kTagTechnologyNdef); |
- out->Set(kTagSupportedTechnologiesProperty, technologies); |
- |
- base::ListValue* records = new base::ListValue(); |
- GetRecordList(tag->GetNdefTagTechnology()->GetNdefMessage(), records); |
- out->Set(kTagRecordsProperty, records); |
-} |
- |
-void NfcDebugMessageHandler::GetRecordList(const NfcNdefMessage& message, |
- base::ListValue* out) { |
- for (NfcNdefMessage::RecordList::const_iterator iter = |
- message.records().begin(); |
- iter != message.records().end(); ++iter) { |
- const NfcNdefRecord* record = (*iter); |
- base::DictionaryValue* record_data = record->data().DeepCopy(); |
- record_data->SetString(kRecordTypeProperty, |
- RecordTypeToString(record->type())); |
- out->Append(record_data); |
- } |
-} |
- |
-void NfcDebugMessageHandler::UpdateAdapterInfo() { |
- base::DictionaryValue data; |
- GetAdapterProperties(&data); |
- web_ui()->CallJavascriptFunctionUnsafe(kOnNfcAdapterInfoChangedFunction, |
- data); |
-} |
- |
-void NfcDebugMessageHandler::UpdatePeerInfo() { |
- base::DictionaryValue data; |
- GetPeerProperties(&data); |
- web_ui()->CallJavascriptFunctionUnsafe(kOnNfcPeerDeviceInfoChangedFunction, |
- data); |
-} |
- |
-void NfcDebugMessageHandler::UpdateTagInfo() { |
- base::DictionaryValue data; |
- GetTagProperties(&data); |
- web_ui()->CallJavascriptFunctionUnsafe(kOnNfcTagInfoChangedFunction, data); |
-} |
- |
-} // namespace |
- |
-NfcDebugUI::NfcDebugUI(content::WebUI* web_ui) |
- : content::WebUIController(web_ui) { |
- web_ui->AddMessageHandler(new NfcDebugMessageHandler()); |
- |
- content::WebUIDataSource* html_source = |
- content::WebUIDataSource::Create(chrome::kChromeUINfcDebugHost); |
- |
- html_source->AddLocalizedString("titleText", IDS_NFC_DEBUG_TITLE); |
- html_source->AddLocalizedString("notSupportedText", |
- IDS_NFC_DEBUG_NOT_SUPPORTED); |
- html_source->AddLocalizedString("adapterHeaderText", |
- IDS_NFC_DEBUG_ADAPTER_HEADER); |
- html_source->AddLocalizedString("adapterPowerOnText", |
- IDS_NFC_DEBUG_ADAPTER_POWER_ON); |
- html_source->AddLocalizedString("adapterPowerOffText", |
- IDS_NFC_DEBUG_ADAPTER_POWER_OFF); |
- html_source->AddLocalizedString("adapterStartPollText", |
- IDS_NFC_DEBUG_ADAPTER_START_POLL); |
- html_source->AddLocalizedString("adapterStopPollText", |
- IDS_NFC_DEBUG_ADAPTER_STOP_POLL); |
- html_source->AddLocalizedString("ndefFormHeaderText", |
- IDS_NFC_DEBUG_NDEF_FORM_HEADER); |
- html_source->AddLocalizedString("ndefFormTypeTextText", |
- IDS_NFC_DEBUG_NDEF_FORM_TYPE_TEXT); |
- html_source->AddLocalizedString("ndefFormTypeUriText", |
- IDS_NFC_DEBUG_NDEF_FORM_TYPE_URI); |
- html_source->AddLocalizedString("ndefFormTypeSmartPosterText", |
- IDS_NFC_DEBUG_NDEF_FORM_TYPE_SMART_POSTER); |
- html_source->AddLocalizedString("ndefFormWriteButtonText", |
- IDS_NFC_DEBUG_NDEF_FORM_WRITE_BUTTON); |
- html_source->AddLocalizedString("ndefFormFieldTextText", |
- IDS_NFC_DEBUG_NDEF_FORM_FIELD_TEXT); |
- html_source->AddLocalizedString("ndefFormFieldEncodingText", |
- IDS_NFC_DEBUG_NDEF_FORM_FIELD_ENCODING); |
- html_source->AddLocalizedString("ndefFormFieldLanguageCodeText", |
- IDS_NFC_DEBUG_NDEF_FORM_FIELD_LANGUAGE_CODE); |
- html_source->AddLocalizedString("ndefFormFieldUriText", |
- IDS_NFC_DEBUG_NDEF_FORM_FIELD_URI); |
- html_source->AddLocalizedString("ndefFormFieldMimeTypeText", |
- IDS_NFC_DEBUG_NDEF_FORM_FIELD_MIME_TYPE); |
- html_source->AddLocalizedString("ndefFormFieldTargetSizeText", |
- IDS_NFC_DEBUG_NDEF_FORM_FIELD_TARGET_SIZE); |
- html_source->AddLocalizedString("ndefFormFieldTitleTextText", |
- IDS_NFC_DEBUG_NDEF_FORM_FIELD_TITLE_TEXT); |
- html_source->AddLocalizedString("ndefFormFieldTitleEncodingText", |
- IDS_NFC_DEBUG_NDEF_FORM_FIELD_TITLE_ENCODING); |
- html_source->AddLocalizedString( |
- "ndefFormFieldTitleLanguageCodeText", |
- IDS_NFC_DEBUG_NDEF_FORM_FIELD_TITLE_LANGUAGE_CODE); |
- html_source->AddLocalizedString("ndefFormPushButtonText", |
- IDS_NFC_DEBUG_NDEF_FORM_PUSH_BUTTON); |
- html_source->AddLocalizedString("nfcPeerHeaderText", |
- IDS_NFC_DEBUG_NFC_PEER_HEADER); |
- html_source->AddLocalizedString("nfcTagHeaderText", |
- IDS_NFC_DEBUG_NFC_TAG_HEADER); |
- html_source->AddLocalizedString("recordsHeaderText", |
- IDS_NFC_DEBUG_RECORDS_HEADER); |
- html_source->AddLocalizedString("errorFailedToSetPowerText", |
- IDS_NFC_DEBUG_ERROR_FAILED_TO_SET_POWER); |
- html_source->AddLocalizedString("errorFailedToSetPollingText", |
- IDS_NFC_DEBUG_ERROR_FAILED_TO_SET_POLLING); |
- html_source->AddLocalizedString("errorFailedToSubmitPrefixText", |
- IDS_NFC_DEBUG_ERROR_FAILED_TO_SUBMIT_PREFIX); |
- html_source->SetJsonPath("strings.js"); |
- |
- // Add required resources. |
- html_source->AddResourcePath("nfc_debug.css", IDR_NFC_DEBUG_CSS); |
- html_source->AddResourcePath("nfc_debug.js", IDR_NFC_DEBUG_JS); |
- html_source->SetDefaultResource(IDR_NFC_DEBUG_HTML); |
- |
- Profile* profile = Profile::FromWebUI(web_ui); |
- content::WebUIDataSource::Add(profile, html_source); |
-} |
- |
-NfcDebugUI::~NfcDebugUI() { |
-} |
- |
-} // namespace chromeos |