| Index: ppapi/shared_impl/ppb_network_list_private_shared.h
|
| diff --git a/ppapi/shared_impl/ppb_network_list_private_shared.h b/ppapi/shared_impl/ppb_network_list_private_shared.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8396003a93ba893ec6d567dc12caeb3f5e949291
|
| --- /dev/null
|
| +++ b/ppapi/shared_impl/ppb_network_list_private_shared.h
|
| @@ -0,0 +1,88 @@
|
| +// Copyright (c) 2012 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.
|
| +
|
| +#ifndef PPAPI_SHARED_IMPL_PPB_NETWORK_LIST_PRIVATE_SHARED_H_
|
| +#define PPAPI_SHARED_IMPL_PPB_NETWORK_LIST_PRIVATE_SHARED_H_
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "ppapi/c/private/ppb_net_address_private.h"
|
| +#include "ppapi/shared_impl/resource.h"
|
| +#include "ppapi/thunk/ppb_network_list_api.h"
|
| +
|
| +namespace ppapi {
|
| +
|
| +struct PPAPI_SHARED_EXPORT NetworkInfo {
|
| + NetworkInfo();
|
| + ~NetworkInfo();
|
| +
|
| + std::string name;
|
| + PP_NetworkListType_Private type;
|
| + PP_NetworkListState_Private state;
|
| + std::vector<PP_NetAddress_Private> addresses;
|
| + std::string display_name;
|
| + int mtu;
|
| +};
|
| +typedef std::vector<NetworkInfo> NetworkList;
|
| +
|
| +// NetworkListStorage is refcounted container for NetworkList. It
|
| +// allows sharing of one NetworkList object between multiple
|
| +// NetworkList resources.
|
| +class PPAPI_SHARED_EXPORT NetworkListStorage
|
| + : public base::RefCountedThreadSafe<NetworkListStorage> {
|
| + public:
|
| + explicit NetworkListStorage(const NetworkList& list);
|
| +
|
| + const NetworkList& list() { return list_; }
|
| +
|
| + private:
|
| + friend class base::RefCountedThreadSafe<NetworkListStorage>;
|
| + ~NetworkListStorage();
|
| +
|
| + NetworkList list_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(NetworkListStorage);
|
| +};
|
| +
|
| +class PPAPI_SHARED_EXPORT PPB_NetworkList_Private_Shared
|
| + : public ::ppapi::Resource,
|
| + public ::ppapi::thunk::PPB_NetworkList_API {
|
| + public:
|
| + static PP_Resource Create(ResourceObjectType type,
|
| + PP_Instance instance,
|
| + const scoped_refptr<NetworkListStorage>& list);
|
| +
|
| + virtual ~PPB_NetworkList_Private_Shared();
|
| +
|
| + // Resource override.
|
| + virtual ::ppapi::thunk::PPB_NetworkList_API*
|
| + AsPPB_NetworkList_API() OVERRIDE;
|
| +
|
| + // PPB_NetworkList_API implementation.
|
| + virtual const NetworkList& GetNetworkListData() const OVERRIDE;
|
| + virtual uint32_t GetCount() OVERRIDE;
|
| + virtual PP_Var GetName(uint32_t index) OVERRIDE;
|
| + virtual PP_NetworkListType_Private GetType(uint32_t index) OVERRIDE;
|
| + virtual PP_NetworkListState_Private GetState(uint32_t index) OVERRIDE;
|
| + virtual int32_t GetIpAddresses(uint32_t index,
|
| + const PP_ArrayOutput& output) OVERRIDE;
|
| + virtual PP_Var GetDisplayName(uint32_t index) OVERRIDE;
|
| + virtual uint32_t GetMTU(uint32_t index) OVERRIDE;
|
| +
|
| + private:
|
| + PPB_NetworkList_Private_Shared(ResourceObjectType type,
|
| + PP_Instance instance,
|
| + const scoped_refptr<NetworkListStorage>& list);
|
| +
|
| + scoped_refptr<NetworkListStorage> list_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(PPB_NetworkList_Private_Shared);
|
| +};
|
| +
|
| +} // namespace ppapi
|
| +
|
| +#endif // PPAPI_SHARED_IMPL_PPB_NETWORK_LIST_PRIVATE_SHARED_H_
|
|
|