Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / device / nfc / nfc_tag_chromeos.h
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef DEVICE_NFC_NFC_TAG_CHROMEOS_H_
6 #define DEVICE_NFC_NFC_TAG_CHROMEOS_H_
7
8 #include <string>
9
10 #include "base/memory/scoped_ptr.h"
11 #include "base/observer_list.h"
12 #include "chromeos/dbus/nfc_tag_client.h"
13 #include "dbus/object_path.h"
14 #include "device/nfc/nfc_tag.h"
15
16 namespace chromeos {
17
18 class NfcNdefTagTechnologyChromeOS;
19
20 // The NfcTagChromeOS class implements device::NfcTag for the Chrome OS
21 // platform.
22 class NfcTagChromeOS : public device::NfcTag,
23                        public NfcTagClient::Observer {
24  public:
25   // device::NfcTag overrides.
26   virtual void AddObserver(device::NfcTag::Observer* observer) override;
27   virtual void RemoveObserver(device::NfcTag::Observer* observer) override;
28   virtual std::string GetIdentifier() const override;
29   virtual TagType GetType() const override;
30   virtual bool IsReadOnly() const override;
31   virtual device::NfcTag::Protocol GetSupportedProtocol() const override;
32   virtual device::NfcTagTechnology::TechnologyTypeMask
33       GetSupportedTechnologies() const override;
34   virtual bool IsReady() const override;
35   virtual device::NfcNdefTagTechnology* GetNdefTagTechnology() override;
36
37   // NfcTagClient::Observer overrides.
38   virtual void TagPropertyChanged(const dbus::ObjectPath& object_path,
39                                   const std::string& property_name) override;
40   virtual void TagPropertiesReceived(
41       const dbus::ObjectPath& object_path) override;
42
43   // Object path representing the remote tag object.
44   const dbus::ObjectPath& object_path() const { return object_path_; }
45
46  private:
47   friend class NfcAdapterChromeOS;
48
49   explicit NfcTagChromeOS(const dbus::ObjectPath& object_path);
50   virtual ~NfcTagChromeOS();
51
52   // Object path of the tag that we are currently tracking.
53   dbus::ObjectPath object_path_;
54
55   // Stores whether or not the initial set of properties have been received.
56   bool is_ready_;
57
58   // The NfcNdefTagTechnology instance that allows users to perform NDEF
59   // read and write on this tag.
60   scoped_ptr<NfcNdefTagTechnologyChromeOS> ndef_technology_;
61
62   // List of observers interested in event notifications from us.
63   ObserverList<device::NfcTag::Observer> observers_;
64
65   DISALLOW_COPY_AND_ASSIGN(NfcTagChromeOS);
66 };
67
68 }  // namespace chromeos
69
70 #endif  // DEVICE_NFC_NFC_TAG_CHROMEOS_H_