Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(410)

Unified Diff: device/nfc/nfc_chromeos_unittest.cc

Issue 2292703002: chromeos: Remove unused NFC D-Bus client library (Closed)
Patch Set: rebase Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « device/nfc/nfc_adapter_factory.cc ('k') | device/nfc/nfc_ndef_record.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/nfc/nfc_chromeos_unittest.cc
diff --git a/device/nfc/nfc_chromeos_unittest.cc b/device/nfc/nfc_chromeos_unittest.cc
deleted file mode 100644
index 7b62970e17ee22283cd0a6fd0e18d36005638e3a..0000000000000000000000000000000000000000
--- a/device/nfc/nfc_chromeos_unittest.cc
+++ /dev/null
@@ -1,862 +0,0 @@
-// Copyright 2013 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 <stddef.h>
-#include <stdint.h>
-
-#include <memory>
-
-#include "base/callback.h"
-#include "base/message_loop/message_loop.h"
-#include "base/run_loop.h"
-#include "base/values.h"
-#include "chromeos/dbus/dbus_thread_manager.h"
-#include "chromeos/dbus/fake_nfc_adapter_client.h"
-#include "chromeos/dbus/fake_nfc_device_client.h"
-#include "chromeos/dbus/fake_nfc_record_client.h"
-#include "chromeos/dbus/fake_nfc_tag_client.h"
-#include "device/nfc/nfc_adapter_chromeos.h"
-#include "device/nfc/nfc_ndef_record.h"
-#include "device/nfc/nfc_ndef_record_utils_chromeos.h"
-#include "device/nfc/nfc_peer.h"
-#include "device/nfc/nfc_tag.h"
-#include "device/nfc/nfc_tag_technology.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/cros_system_api/dbus/service_constants.h"
-
-using device::NfcAdapter;
-using device::NfcNdefMessage;
-using device::NfcNdefRecord;
-using device::NfcNdefTagTechnology;
-using device::NfcPeer;
-using device::NfcTag;
-
-namespace chromeos {
-
-namespace {
-
-// Callback passed to property structures.
-void OnPropertyChangedCallback(const std::string& property_name) {
-}
-
-// Callback passed to dbus::PropertyBase::Set.
-void OnSet(bool success) {
-}
-
-class TestObserver : public NfcAdapter::Observer,
- public NfcPeer::Observer,
- public NfcTag::Observer,
- public NfcNdefTagTechnology::Observer {
- public:
- TestObserver(scoped_refptr<NfcAdapter> adapter)
- : present_changed_count_(0),
- powered_changed_count_(0),
- polling_changed_count_(0),
- peer_records_received_count_(0),
- tag_records_received_count_(0),
- peer_count_(0),
- tag_count_(0),
- adapter_(adapter) {
- }
-
- ~TestObserver() override {}
-
- // NfcAdapter::Observer override.
- void AdapterPresentChanged(NfcAdapter* adapter, bool present) override {
- EXPECT_EQ(adapter_.get(), adapter);
- present_changed_count_++;
- }
-
- // NfcAdapter::Observer override.
- void AdapterPoweredChanged(NfcAdapter* adapter, bool powered) override {
- EXPECT_EQ(adapter_.get(), adapter);
- powered_changed_count_++;
- }
-
- // NfcAdapter::Observer override.
- void AdapterPollingChanged(NfcAdapter* adapter, bool powered) override {
- EXPECT_EQ(adapter_.get(), adapter);
- polling_changed_count_++;
- }
-
- // NfcAdapter::Observer override.
- void PeerFound(NfcAdapter* adapter, NfcPeer* peer) override {
- EXPECT_EQ(adapter_.get(), adapter);
- peer_count_++;
- peer_identifier_ = peer->GetIdentifier();
- }
-
- // NfcAdapter::Observer override.
- void PeerLost(NfcAdapter* adapter, NfcPeer* peer) override {
- EXPECT_EQ(adapter_.get(), adapter);
- EXPECT_EQ(peer_identifier_, peer->GetIdentifier());
- peer_count_--;
- peer_identifier_.clear();
- }
-
- // NfcAdapter::Observer override.
- void TagFound(NfcAdapter* adapter, NfcTag* tag) override {
- EXPECT_EQ(adapter_.get(), adapter);
- tag_count_++;
- tag_identifier_ = tag->GetIdentifier();
- }
-
- // NfcAdapter::Observer override.
- void TagLost(NfcAdapter* adapter, NfcTag* tag) override {
- EXPECT_EQ(adapter_.get(), adapter);
- EXPECT_EQ(tag_identifier_, tag->GetIdentifier());
- tag_count_--;
- tag_identifier_.clear();
- }
-
- // NfcPeer::Observer override.
- void RecordReceived(NfcPeer* peer, const NfcNdefRecord* record) override {
- EXPECT_EQ(peer, adapter_->GetPeer(peer_identifier_));
- EXPECT_EQ(peer_identifier_, peer->GetIdentifier());
- peer_records_received_count_++;
- }
-
- // NfcNdefTagTechnology::Observer override.
- void RecordReceived(NfcTag* tag, const NfcNdefRecord* record) override {
- EXPECT_EQ(tag, adapter_->GetTag(tag_identifier_));
- EXPECT_EQ(tag_identifier_, tag->GetIdentifier());
- tag_records_received_count_++;
- }
-
- int present_changed_count_;
- int powered_changed_count_;
- int polling_changed_count_;
- int peer_records_received_count_;
- int tag_records_received_count_;
- int peer_count_;
- int tag_count_;
- std::string peer_identifier_;
- std::string tag_identifier_;
- scoped_refptr<NfcAdapter> adapter_;
-};
-
-} // namespace
-
-class NfcChromeOSTest : public testing::Test {
- public:
- void SetUp() override {
- DBusThreadManager::Initialize();
- fake_nfc_adapter_client_ = static_cast<FakeNfcAdapterClient*>(
- DBusThreadManager::Get()->GetNfcAdapterClient());
- fake_nfc_device_client_ = static_cast<FakeNfcDeviceClient*>(
- DBusThreadManager::Get()->GetNfcDeviceClient());
- fake_nfc_record_client_ = static_cast<FakeNfcRecordClient*>(
- DBusThreadManager::Get()->GetNfcRecordClient());
- fake_nfc_tag_client_ = static_cast<FakeNfcTagClient*>(
- DBusThreadManager::Get()->GetNfcTagClient());
-
- fake_nfc_adapter_client_->EnablePairingOnPoll(false);
- fake_nfc_device_client_->DisableSimulationTimeout();
- fake_nfc_tag_client_->DisableSimulationTimeout();
- success_callback_count_ = 0;
- error_callback_count_ = 0;
- }
-
- void TearDown() override {
- adapter_ = NULL;
- DBusThreadManager::Shutdown();
- }
-
- // Assigns a new instance of NfcAdapterChromeOS to |adapter_|.
- void SetAdapter() {
- adapter_ = new NfcAdapterChromeOS();
- ASSERT_TRUE(adapter_.get() != NULL);
- ASSERT_TRUE(adapter_->IsInitialized());
- base::RunLoop().RunUntilIdle();
- }
-
- // Generic callbacks for success and error.
- void SuccessCallback() {
- success_callback_count_++;
- }
-
- void ErrorCallback() {
- error_callback_count_++;
- }
-
- void ErrorCallbackWithParameters(const std::string& error_name,
- const std::string& error_message) {
- LOG(INFO) << "Error callback called: " << error_name << ", "
- << error_message;
- error_callback_count_++;
- }
-
- protected:
- // MessageLoop instance, used to simulate asynchronous behavior.
- base::MessageLoop message_loop_;
-
- // Fields for storing the number of times SuccessCallback and ErrorCallback
- // have been called.
- int success_callback_count_;
- int error_callback_count_;
-
- // The NfcAdapter instance under test.
- scoped_refptr<NfcAdapter> adapter_;
-
- // The fake D-Bus client instances used for testing.
- FakeNfcAdapterClient* fake_nfc_adapter_client_;
- FakeNfcDeviceClient* fake_nfc_device_client_;
- FakeNfcRecordClient* fake_nfc_record_client_;
- FakeNfcTagClient* fake_nfc_tag_client_;
-};
-
-// Tests that the adapter updates correctly to reflect the current "default"
-// adapter, when multiple adapters appear and disappear.
-TEST_F(NfcChromeOSTest, PresentChanged) {
- SetAdapter();
- EXPECT_TRUE(adapter_->IsPresent());
-
- TestObserver observer(adapter_);
- adapter_->AddObserver(&observer);
-
- // Remove all adapters.
- fake_nfc_adapter_client_->SetAdapterPresent(false);
- EXPECT_EQ(1, observer.present_changed_count_);
- EXPECT_FALSE(adapter_->IsPresent());
-
- // Add two adapters.
- fake_nfc_adapter_client_->SetAdapterPresent(true);
- fake_nfc_adapter_client_->SetSecondAdapterPresent(true);
- EXPECT_EQ(2, observer.present_changed_count_);
- EXPECT_TRUE(adapter_->IsPresent());
-
- // Remove the first adapter. Adapter should update to the second one.
- fake_nfc_adapter_client_->SetAdapterPresent(false);
- EXPECT_EQ(4, observer.present_changed_count_);
- EXPECT_TRUE(adapter_->IsPresent());
-
- fake_nfc_adapter_client_->SetSecondAdapterPresent(false);
- EXPECT_EQ(5, observer.present_changed_count_);
- EXPECT_FALSE(adapter_->IsPresent());
-}
-
-// Tests that the adapter correctly reflects the power state.
-TEST_F(NfcChromeOSTest, SetPowered) {
- SetAdapter();
- TestObserver observer(adapter_);
- adapter_->AddObserver(&observer);
-
- EXPECT_FALSE(adapter_->IsPowered());
-
- // SetPowered(false), while not powered.
- adapter_->SetPowered(
- false,
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- EXPECT_FALSE(adapter_->IsPowered());
- EXPECT_EQ(0, observer.powered_changed_count_);
- EXPECT_EQ(0, success_callback_count_);
- EXPECT_EQ(1, error_callback_count_);
-
- // SetPowered(true).
- adapter_->SetPowered(
- true,
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- EXPECT_TRUE(adapter_->IsPowered());
- EXPECT_EQ(1, observer.powered_changed_count_);
- EXPECT_EQ(1, success_callback_count_);
- EXPECT_EQ(1, error_callback_count_);
-
- // SetPowered(true), while powered.
- adapter_->SetPowered(
- true,
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- EXPECT_TRUE(adapter_->IsPowered());
- EXPECT_EQ(1, observer.powered_changed_count_);
- EXPECT_EQ(1, success_callback_count_);
- EXPECT_EQ(2, error_callback_count_);
-
- // SetPowered(false).
- adapter_->SetPowered(
- false,
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- EXPECT_FALSE(adapter_->IsPowered());
- EXPECT_EQ(2, observer.powered_changed_count_);
- EXPECT_EQ(2, success_callback_count_);
- EXPECT_EQ(2, error_callback_count_);
-}
-
-// Tests that the power state updates correctly when the adapter disappears.
-TEST_F(NfcChromeOSTest, PresentChangedWhilePowered) {
- SetAdapter();
- TestObserver observer(adapter_);
- adapter_->AddObserver(&observer);
-
- EXPECT_FALSE(adapter_->IsPowered());
- EXPECT_TRUE(adapter_->IsPresent());
-
- adapter_->SetPowered(
- true,
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- EXPECT_TRUE(adapter_->IsPowered());
-
- fake_nfc_adapter_client_->SetAdapterPresent(false);
- EXPECT_EQ(1, observer.present_changed_count_);
- EXPECT_EQ(2, observer.powered_changed_count_);
- EXPECT_FALSE(adapter_->IsPowered());
- EXPECT_FALSE(adapter_->IsPresent());
-}
-
-// Tests that peer and record objects are created for all peers and records
-// that already exist when the adapter is created.
-TEST_F(NfcChromeOSTest, PeersInitializedWhenAdapterCreated) {
- // Set up the adapter client.
- NfcAdapterClient::Properties* properties =
- fake_nfc_adapter_client_->GetProperties(
- dbus::ObjectPath(FakeNfcAdapterClient::kAdapterPath0));
- properties->powered.Set(true, base::Bind(&OnSet));
-
- fake_nfc_adapter_client_->StartPollLoop(
- dbus::ObjectPath(FakeNfcAdapterClient::kAdapterPath0),
- nfc_adapter::kModeInitiator,
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallbackWithParameters,
- base::Unretained(this)));
- EXPECT_EQ(1, success_callback_count_);
- EXPECT_TRUE(properties->powered.value());
- EXPECT_TRUE(properties->polling.value());
-
- // Start pairing simulation, which will add a fake device and fake records.
- fake_nfc_device_client_->BeginPairingSimulation(0, 0);
- base::RunLoop().RunUntilIdle();
-
- // Create the adapter.
- SetAdapter();
- TestObserver observer(adapter_);
- adapter_->AddObserver(&observer);
-
- // Observer shouldn't have received any calls, as it got created AFTER the
- // notifications were sent.
- EXPECT_EQ(0, observer.present_changed_count_);
- EXPECT_EQ(0, observer.powered_changed_count_);
- EXPECT_EQ(0, observer.polling_changed_count_);
- EXPECT_EQ(0, observer.peer_count_);
-
- EXPECT_TRUE(adapter_->IsPresent());
- EXPECT_TRUE(adapter_->IsPowered());
- EXPECT_FALSE(adapter_->IsPolling());
-
- NfcAdapter::PeerList peers;
- adapter_->GetPeers(&peers);
- EXPECT_EQ(static_cast<size_t>(1), peers.size());
-
- NfcPeer* peer = peers[0];
- const NfcNdefMessage& message = peer->GetNdefMessage();
- EXPECT_EQ(static_cast<size_t>(3), message.records().size());
-}
-
-// Tests that tag and record objects are created for all tags and records that
-// already exist when the adapter is created.
-TEST_F(NfcChromeOSTest, TagsInitializedWhenAdapterCreated) {
- const char kTestURI[] = "fake://path/for/testing";
-
- // Set up the adapter client.
- NfcAdapterClient::Properties* properties =
- fake_nfc_adapter_client_->GetProperties(
- dbus::ObjectPath(FakeNfcAdapterClient::kAdapterPath0));
- properties->powered.Set(true, base::Bind(&OnSet));
-
- fake_nfc_adapter_client_->StartPollLoop(
- dbus::ObjectPath(FakeNfcAdapterClient::kAdapterPath0),
- nfc_adapter::kModeInitiator,
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallbackWithParameters,
- base::Unretained(this)));
- EXPECT_EQ(1, success_callback_count_);
- EXPECT_TRUE(properties->powered.value());
- EXPECT_TRUE(properties->polling.value());
-
- // Add the fake tag.
- fake_nfc_tag_client_->BeginPairingSimulation(0);
- base::RunLoop().RunUntilIdle();
-
- // Create a fake record.
- base::DictionaryValue test_record_data;
- test_record_data.SetString(nfc_record::kTypeProperty, nfc_record::kTypeUri);
- test_record_data.SetString(nfc_record::kUriProperty, kTestURI);
- fake_nfc_tag_client_->Write(
- dbus::ObjectPath(FakeNfcTagClient::kTagPath),
- test_record_data,
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallbackWithParameters,
- base::Unretained(this)));
- EXPECT_EQ(2, success_callback_count_);
-
- // Create the adapter.
- SetAdapter();
- TestObserver observer(adapter_);
- adapter_->AddObserver(&observer);
-
- // Observer shouldn't have received any calls, as it got created AFTER the
- // notifications were sent.
- EXPECT_EQ(0, observer.present_changed_count_);
- EXPECT_EQ(0, observer.powered_changed_count_);
- EXPECT_EQ(0, observer.polling_changed_count_);
- EXPECT_EQ(0, observer.peer_count_);
-
- EXPECT_TRUE(adapter_->IsPresent());
- EXPECT_TRUE(adapter_->IsPowered());
- EXPECT_FALSE(adapter_->IsPolling());
-
- NfcAdapter::TagList tags;
- adapter_->GetTags(&tags);
- EXPECT_EQ(static_cast<size_t>(1), tags.size());
-
- NfcTag* tag = tags[0];
- const NfcNdefMessage& message = tag->GetNdefTagTechnology()->GetNdefMessage();
- EXPECT_EQ(static_cast<size_t>(1), message.records().size());
-
- const NfcNdefRecord* record = message.records()[0];
- std::string uri;
- EXPECT_TRUE(record->data().GetString(NfcNdefRecord::kFieldURI, &uri));
- EXPECT_EQ(kTestURI, uri);
-}
-
-// Tests that the adapter correctly updates its state when polling is started
-// and stopped.
-TEST_F(NfcChromeOSTest, StartAndStopPolling) {
- SetAdapter();
- EXPECT_TRUE(adapter_->IsPresent());
-
- TestObserver observer(adapter_);
- adapter_->AddObserver(&observer);
-
- // Start polling while not powered. Should fail.
- EXPECT_FALSE(adapter_->IsPowered());
- adapter_->StartPolling(
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- EXPECT_EQ(0, success_callback_count_);
- EXPECT_EQ(1, error_callback_count_);
- EXPECT_FALSE(adapter_->IsPolling());
-
- // Start polling while powered. Should succeed.
- adapter_->SetPowered(
- true,
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- EXPECT_EQ(1, success_callback_count_);
- EXPECT_EQ(1, error_callback_count_);
- EXPECT_TRUE(adapter_->IsPowered());
-
- adapter_->StartPolling(
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- EXPECT_EQ(2, success_callback_count_);
- EXPECT_EQ(1, error_callback_count_);
- EXPECT_TRUE(adapter_->IsPolling());
-
- // Start polling while already polling. Should fail.
- adapter_->StartPolling(
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- EXPECT_EQ(2, success_callback_count_);
- EXPECT_EQ(2, error_callback_count_);
- EXPECT_TRUE(adapter_->IsPolling());
-
- // Stop polling. Should succeed.
- adapter_->StopPolling(
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- EXPECT_EQ(3, success_callback_count_);
- EXPECT_EQ(2, error_callback_count_);
- EXPECT_FALSE(adapter_->IsPolling());
-
- // Stop polling while not polling. Should fail.
- adapter_->StopPolling(
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- EXPECT_EQ(3, success_callback_count_);
- EXPECT_EQ(3, error_callback_count_);
- EXPECT_FALSE(adapter_->IsPolling());
-}
-
-// Tests a simple peer pairing simulation.
-TEST_F(NfcChromeOSTest, PeerTest) {
- SetAdapter();
- TestObserver observer(adapter_);
- adapter_->AddObserver(&observer);
-
- adapter_->SetPowered(
- true,
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- adapter_->StartPolling(
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- EXPECT_EQ(2, success_callback_count_);
-
- EXPECT_TRUE(adapter_->IsPowered());
- EXPECT_TRUE(adapter_->IsPolling());
- EXPECT_EQ(0, observer.peer_count_);
-
- // Add the fake device.
- fake_nfc_device_client_->BeginPairingSimulation(0, -1);
- base::RunLoop().RunUntilIdle();
-
- EXPECT_EQ(1, observer.peer_count_);
- EXPECT_EQ(FakeNfcDeviceClient::kDevicePath, observer.peer_identifier_);
-
- NfcPeer* peer = adapter_->GetPeer(observer.peer_identifier_);
- CHECK(peer);
- peer->AddObserver(&observer);
-
- // Peer should have no records on it.
- EXPECT_TRUE(peer->GetNdefMessage().records().empty());
- EXPECT_EQ(0, observer.peer_records_received_count_);
-
- // Make records visible.
- fake_nfc_record_client_->SetDeviceRecordsVisible(true);
- EXPECT_EQ(3, observer.peer_records_received_count_);
- EXPECT_EQ(static_cast<size_t>(3), peer->GetNdefMessage().records().size());
-
- // End the simulation. Peer should get removed.
- fake_nfc_device_client_->EndPairingSimulation();
- EXPECT_EQ(0, observer.peer_count_);
- EXPECT_TRUE(observer.peer_identifier_.empty());
-
- peer = adapter_->GetPeer(observer.peer_identifier_);
- EXPECT_FALSE(peer);
-
- // No record related notifications will be sent when a peer gets removed.
- EXPECT_EQ(3, observer.peer_records_received_count_);
-}
-
-// Tests a simple tag pairing simulation.
-TEST_F(NfcChromeOSTest, TagTest) {
- const char kTestURI[] = "fake://path/for/testing";
-
- SetAdapter();
- TestObserver observer(adapter_);
- adapter_->AddObserver(&observer);
-
- adapter_->SetPowered(
- true,
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- adapter_->StartPolling(
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- EXPECT_EQ(2, success_callback_count_);
-
- EXPECT_TRUE(adapter_->IsPowered());
- EXPECT_TRUE(adapter_->IsPolling());
- EXPECT_EQ(0, observer.tag_count_);
-
- // Add the fake tag.
- fake_nfc_tag_client_->BeginPairingSimulation(0);
- base::RunLoop().RunUntilIdle();
-
- EXPECT_EQ(1, observer.tag_count_);
- EXPECT_EQ(FakeNfcTagClient::kTagPath, observer.tag_identifier_);
-
- NfcTag* tag = adapter_->GetTag(observer.tag_identifier_);
- CHECK(tag);
- tag->AddObserver(&observer);
- EXPECT_TRUE(tag->IsReady());
- CHECK(tag->GetNdefTagTechnology());
- tag->GetNdefTagTechnology()->AddObserver(&observer);
-
- NfcNdefTagTechnology* tag_technology = tag->GetNdefTagTechnology();
- EXPECT_TRUE(tag_technology->IsSupportedByTag());
-
- // Tag should have no records on it.
- EXPECT_TRUE(tag_technology->GetNdefMessage().records().empty());
- EXPECT_EQ(0, observer.tag_records_received_count_);
-
- // Set the tag record visible. By default the record has no content, so no
- // NfcNdefMessage should be received.
- fake_nfc_record_client_->SetTagRecordsVisible(true);
- EXPECT_TRUE(tag_technology->GetNdefMessage().records().empty());
- EXPECT_EQ(0, observer.tag_records_received_count_);
- fake_nfc_record_client_->SetTagRecordsVisible(false);
-
- // Write an NDEF record to the tag.
- EXPECT_EQ(2, success_callback_count_); // 2 for SetPowered and StartPolling.
- EXPECT_EQ(0, error_callback_count_);
-
- base::DictionaryValue record_data;
- record_data.SetString(NfcNdefRecord::kFieldURI, kTestURI);
- NfcNdefRecord written_record;
- written_record.Populate(NfcNdefRecord::kTypeURI, &record_data);
- NfcNdefMessage written_message;
- written_message.AddRecord(&written_record);
-
- tag_technology->WriteNdef(
- written_message,
- base::Bind(&NfcChromeOSTest::SuccessCallback,
- base::Unretained(this)),
- base::Bind(&NfcChromeOSTest::ErrorCallback,
- base::Unretained(this)));
- EXPECT_EQ(3, success_callback_count_);
- EXPECT_EQ(0, error_callback_count_);
-
- EXPECT_EQ(static_cast<size_t>(1),
- tag_technology->GetNdefMessage().records().size());
- EXPECT_EQ(1, observer.tag_records_received_count_);
-
- NfcNdefRecord* received_record =
- tag_technology->GetNdefMessage().records()[0];
- EXPECT_EQ(NfcNdefRecord::kTypeURI, received_record->type());
- std::string uri;
- EXPECT_TRUE(received_record->data().GetString(
- NfcNdefRecord::kFieldURI, &uri));
- EXPECT_EQ(kTestURI, uri);
-
- // End the simulation. Tag should get removed.
- fake_nfc_tag_client_->EndPairingSimulation();
- EXPECT_EQ(0, observer.tag_count_);
- EXPECT_TRUE(observer.tag_identifier_.empty());
-
- tag = adapter_->GetTag(observer.tag_identifier_);
- EXPECT_FALSE(tag);
-
- // No record related notifications will be sent when a tag gets removed.
- EXPECT_EQ(1, observer.tag_records_received_count_);
-}
-
-// Unit tests for nfc_ndef_record_utils methods.
-TEST_F(NfcChromeOSTest, NfcNdefRecordToDBusAttributes) {
- const char kText[] = "text";
- const char kURI[] = "test://uri";
- const char kEncoding[] = "encoding";
- const char kLanguageCode[] = "en";
- const char kMimeType[] = "mime-type";
- const double kSize = 5;
-
- // Text record.
- base::DictionaryValue data;
- data.SetString(NfcNdefRecord::kFieldText, kText);
- data.SetString(NfcNdefRecord::kFieldLanguageCode, kLanguageCode);
- data.SetString(NfcNdefRecord::kFieldEncoding, kEncoding);
-
- std::unique_ptr<NfcNdefRecord> record(new NfcNdefRecord());
- ASSERT_TRUE(record->Populate(NfcNdefRecord::kTypeText, &data));
-
- base::DictionaryValue result;
- EXPECT_TRUE(nfc_ndef_record_utils::NfcNdefRecordToDBusAttributes(
- record.get(), &result));
-
- std::string string_value;
- EXPECT_TRUE(result.GetString(
- nfc_record::kTypeProperty, &string_value));
- EXPECT_EQ(nfc_record::kTypeText, string_value);
- EXPECT_TRUE(result.GetString(
- nfc_record::kRepresentationProperty, &string_value));
- EXPECT_EQ(kText, string_value);
- EXPECT_TRUE(result.GetString(
- nfc_record::kLanguageProperty, &string_value));
- EXPECT_EQ(kLanguageCode, string_value);
- EXPECT_TRUE(result.GetString(
- nfc_record::kEncodingProperty, &string_value));
- EXPECT_EQ(kEncoding, string_value);
-
- // URI record.
- data.Clear();
- data.SetString(NfcNdefRecord::kFieldURI, kURI);
- data.SetString(NfcNdefRecord::kFieldMimeType, kMimeType);
- data.SetDouble(NfcNdefRecord::kFieldTargetSize, kSize);
-
- record.reset(new NfcNdefRecord());
- ASSERT_TRUE(record->Populate(NfcNdefRecord::kTypeURI, &data));
-
- result.Clear();
- EXPECT_TRUE(nfc_ndef_record_utils::NfcNdefRecordToDBusAttributes(
- record.get(), &result));
-
- EXPECT_TRUE(result.GetString(nfc_record::kTypeProperty, &string_value));
- EXPECT_EQ(nfc_record::kTypeUri, string_value);
- EXPECT_TRUE(result.GetString(nfc_record::kUriProperty, &string_value));
- EXPECT_EQ(kURI, string_value);
- EXPECT_TRUE(result.GetString(nfc_record::kMimeTypeProperty, &string_value));
- EXPECT_EQ(kMimeType, string_value);
- double double_value;
- EXPECT_TRUE(result.GetDouble(nfc_record::kSizeProperty, &double_value));
- EXPECT_EQ(kSize, double_value);
-
- // SmartPoster record.
- base::DictionaryValue* title = new base::DictionaryValue();
- title->SetString(NfcNdefRecord::kFieldText, kText);
- title->SetString(NfcNdefRecord::kFieldLanguageCode, kLanguageCode);
- title->SetString(NfcNdefRecord::kFieldEncoding, kEncoding);
-
- base::ListValue* titles = new base::ListValue();
- titles->Append(title);
- data.Set(NfcNdefRecord::kFieldTitles, titles);
-
- record.reset(new NfcNdefRecord());
- ASSERT_TRUE(record->Populate(NfcNdefRecord::kTypeSmartPoster, &data));
-
- result.Clear();
- EXPECT_TRUE(nfc_ndef_record_utils::NfcNdefRecordToDBusAttributes(
- record.get(), &result));
-
- EXPECT_TRUE(result.GetString(
- nfc_record::kTypeProperty, &string_value));
- EXPECT_EQ(nfc_record::kTypeSmartPoster, string_value);
- EXPECT_TRUE(result.GetString(
- nfc_record::kRepresentationProperty, &string_value));
- EXPECT_EQ(kText, string_value);
- EXPECT_TRUE(result.GetString(
- nfc_record::kLanguageProperty, &string_value));
- EXPECT_EQ(kLanguageCode, string_value);
- EXPECT_TRUE(result.GetString(
- nfc_record::kEncodingProperty, &string_value));
- EXPECT_EQ(kEncoding, string_value);
- EXPECT_TRUE(result.GetString(nfc_record::kUriProperty, &string_value));
- EXPECT_EQ(kURI, string_value);
- EXPECT_TRUE(result.GetString(nfc_record::kMimeTypeProperty, &string_value));
- EXPECT_EQ(kMimeType, string_value);
- EXPECT_TRUE(result.GetDouble(nfc_record::kSizeProperty, &double_value));
- EXPECT_EQ(kSize, double_value);
-}
-
-TEST_F(NfcChromeOSTest, RecordPropertiesToNfcNdefRecord) {
- const char kText[] = "text";
- const char kURI[] = "test://uri";
- const char kEncoding[] = "encoding";
- const char kLanguageCode[] = "en";
- const char kMimeType[] = "mime-type";
- const uint32_t kSize = 5;
-
- FakeNfcRecordClient::Properties record_properties(
- base::Bind(&OnPropertyChangedCallback));
-
- // Text record.
- record_properties.type.ReplaceValue(nfc_record::kTypeText);
- record_properties.representation.ReplaceValue(kText);
- record_properties.language.ReplaceValue(kLanguageCode);
- record_properties.encoding.ReplaceValue(kEncoding);
-
- std::unique_ptr<NfcNdefRecord> record(new NfcNdefRecord());
- EXPECT_TRUE(nfc_ndef_record_utils::RecordPropertiesToNfcNdefRecord(
- &record_properties, record.get()));
- EXPECT_TRUE(record->IsPopulated());
-
- std::string string_value;
- EXPECT_EQ(NfcNdefRecord::kTypeText, record->type());
- EXPECT_TRUE(record->data().GetString(
- NfcNdefRecord::kFieldText, &string_value));
- EXPECT_EQ(kText, string_value);
- EXPECT_TRUE(record->data().GetString(
- NfcNdefRecord::kFieldLanguageCode, &string_value));
- EXPECT_EQ(kLanguageCode, string_value);
- EXPECT_TRUE(record->data().GetString(
- NfcNdefRecord::kFieldEncoding, &string_value));
- EXPECT_EQ(kEncoding, string_value);
-
- // URI record.
- record_properties.representation.ReplaceValue("");
- record_properties.language.ReplaceValue("");
- record_properties.encoding.ReplaceValue("");
-
- record_properties.type.ReplaceValue(nfc_record::kTypeUri);
- record_properties.uri.ReplaceValue(kURI);
- record_properties.mime_type.ReplaceValue(kMimeType);
- record_properties.size.ReplaceValue(kSize);
-
- record.reset(new NfcNdefRecord());
- EXPECT_TRUE(nfc_ndef_record_utils::RecordPropertiesToNfcNdefRecord(
- &record_properties, record.get()));
- EXPECT_TRUE(record->IsPopulated());
-
- EXPECT_EQ(NfcNdefRecord::kTypeURI, record->type());
- EXPECT_TRUE(record->data().GetString(
- NfcNdefRecord::kFieldURI, &string_value));
- EXPECT_EQ(kURI, string_value);
- EXPECT_TRUE(record->data().GetString(
- NfcNdefRecord::kFieldMimeType, &string_value));
- EXPECT_EQ(kMimeType, string_value);
- double double_value;
- EXPECT_TRUE(record->data().GetDouble(
- NfcNdefRecord::kFieldTargetSize, &double_value));
- EXPECT_EQ(kSize, double_value);
-
- // Contents not matching type.
- record_properties.representation.ReplaceValue(kText);
- record_properties.language.ReplaceValue(kLanguageCode);
- record_properties.encoding.ReplaceValue(kEncoding);
-
- record.reset(new NfcNdefRecord());
- EXPECT_FALSE(nfc_ndef_record_utils::RecordPropertiesToNfcNdefRecord(
- &record_properties, record.get()));
- EXPECT_FALSE(record->IsPopulated());
-
- // SmartPoster record.
- record_properties.type.ReplaceValue(nfc_record::kTypeSmartPoster);
- EXPECT_TRUE(nfc_ndef_record_utils::RecordPropertiesToNfcNdefRecord(
- &record_properties, record.get()));
- EXPECT_TRUE(record->IsPopulated());
-
- EXPECT_EQ(NfcNdefRecord::kTypeSmartPoster, record->type());
- EXPECT_TRUE(record->data().GetString(
- NfcNdefRecord::kFieldURI, &string_value));
- EXPECT_EQ(kURI, string_value);
- EXPECT_TRUE(record->data().GetString(
- NfcNdefRecord::kFieldMimeType, &string_value));
- EXPECT_EQ(kMimeType, string_value);
- EXPECT_TRUE(record->data().GetDouble(
- NfcNdefRecord::kFieldTargetSize, &double_value));
- EXPECT_EQ(kSize, double_value);
-
- const base::ListValue* titles = NULL;
- EXPECT_TRUE(record->data().GetList(NfcNdefRecord::kFieldTitles, &titles));
- EXPECT_EQ(static_cast<size_t>(1), titles->GetSize());
- ASSERT_TRUE(titles);
- const base::DictionaryValue* title = NULL;
- EXPECT_TRUE(titles->GetDictionary(0, &title));
- CHECK(title);
-
- EXPECT_TRUE(title->GetString(NfcNdefRecord::kFieldText, &string_value));
- EXPECT_EQ(kText, string_value);
- EXPECT_TRUE(title->GetString(
- NfcNdefRecord::kFieldLanguageCode, &string_value));
- EXPECT_EQ(kLanguageCode, string_value);
- EXPECT_TRUE(title->GetString(NfcNdefRecord::kFieldEncoding, &string_value));
- EXPECT_EQ(kEncoding, string_value);
-}
-
-} // namespace chromeos
« no previous file with comments | « device/nfc/nfc_adapter_factory.cc ('k') | device/nfc/nfc_ndef_record.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698