| Index: chrome/browser/extensions/api/socket/socket_api_controller.h
|
| diff --git a/chrome/browser/extensions/api/socket/socket_api_controller.h b/chrome/browser/extensions/api/socket/socket_api_controller.h
|
| index f35b10a4492315a4c6fd85053afc8d94745ea1bc..ff50bc0b6e9accb0c28644259c7ee49f15b4a3c5 100644
|
| --- a/chrome/browser/extensions/api/socket/socket_api_controller.h
|
| +++ b/chrome/browser/extensions/api/socket/socket_api_controller.h
|
| @@ -9,8 +9,8 @@
|
| #include <string>
|
| #include <map>
|
|
|
| +#include "base/memory/linked_ptr.h"
|
| #include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/singleton.h"
|
| #include "googleurl/src/gurl.h"
|
| #include "net/base/completion_callback.h"
|
|
|
| @@ -30,25 +30,19 @@ namespace extensions {
|
|
|
| class Socket;
|
|
|
| -// The SocketController singleton keeps track of all our Sockets, and provides
|
| -// a convenient set of methods to manipulate them.
|
| +// SocketController keeps track of a collection of Sockets and provides a
|
| +// convenient set of methods to manipulate them.
|
| class SocketController {
|
| public:
|
| - static SocketController* GetInstance();
|
| -
|
| SocketController();
|
| virtual ~SocketController();
|
|
|
| // Create/Destroy are a pair. They represent the allocation and deallocation
|
| // of the Socket object in memory.
|
| //
|
| - // TODO(miket): we currently require the app developer to remember to call
|
| - // Destroy, which is a buzzkill in JavaScript. I believe that to solve this,
|
| - // we'll have to associate each Socket with a creator extension, and then
|
| - // clean up when the extension goes out of scope. As the API is defined
|
| - // today, we're exposing only primitive socketIds to JavaScript, which seems
|
| - // to imply that we won't be able to garbage-collect when individual sockets
|
| - // "go out of scope" (in quotes because they never do).
|
| + // TODO(miket): aa's suggestion to track lifetime of callbacks associated
|
| + // with each socket, which will then let us clean up when we go out of scope
|
| + // rather than requiring that the app developer remember to call Destroy.
|
| int CreateUdp(const Profile* profile, const std::string& extension_id,
|
| const GURL& src_url);
|
| bool DestroyUdp(int socket_id);
|
| @@ -68,14 +62,12 @@ class SocketController {
|
|
|
| private:
|
| int next_socket_id_;
|
| - typedef std::map<int, Socket*> SocketMap;
|
| + typedef std::map<int, linked_ptr<Socket> > SocketMap;
|
| SocketMap socket_map_;
|
|
|
| // Convenience method for accessing SocketMap.
|
| Socket* GetSocket(int socket_id);
|
|
|
| - friend struct DefaultSingletonTraits<SocketController>;
|
| -
|
| DISALLOW_COPY_AND_ASSIGN(SocketController);
|
| };
|
|
|
|
|