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

Side by Side Diff: extensions/browser/api/sockets_tcp/tcp_socket_event_dispatcher.h

Issue 183893041: Move sockets APIs out of src/chrome (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_SOCKETS_TCP_TCP_SOCKET_EVENT_DISPATCHER_H_ 5 #ifndef EXTENSIONS_BROWSER_API_SOCKETS_TCP_TCP_SOCKET_EVENT_DISPATCHER_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_SOCKETS_TCP_TCP_SOCKET_EVENT_DISPATCHER_H_ 6 #define EXTENSIONS_BROWSER_API_SOCKETS_TCP_TCP_SOCKET_EVENT_DISPATCHER_H_
7 7
8 #include "chrome/browser/extensions/api/api_resource_manager.h" 8 #include "chrome/browser/extensions/api/api_resource_manager.h"
9 #include "chrome/browser/extensions/api/sockets_tcp/sockets_tcp_api.h" 9 #include "extensions/browser/api/sockets_tcp/sockets_tcp_api.h"
10 10
11 namespace content { 11 namespace content {
12 class BrowserContext; 12 class BrowserContext;
13 } 13 }
14 14
15 namespace extensions { 15 namespace extensions {
16 struct Event; 16 struct Event;
17 class ResumableTCPSocket; 17 class ResumableTCPSocket;
18 } 18 }
19 19
20 namespace extensions { 20 namespace extensions {
21 namespace api { 21 namespace core_api {
22 22
23 // Dispatch events related to "sockets.tcp" sockets from callback on native 23 // Dispatch events related to "sockets.tcp" sockets from callback on native
24 // socket instances. There is one instance per profile. 24 // socket instances. There is one instance per profile.
25 class TCPSocketEventDispatcher 25 class TCPSocketEventDispatcher
26 : public BrowserContextKeyedAPI, 26 : public BrowserContextKeyedAPI,
27 public base::SupportsWeakPtr<TCPSocketEventDispatcher> { 27 public base::SupportsWeakPtr<TCPSocketEventDispatcher> {
28 public: 28 public:
29 explicit TCPSocketEventDispatcher(content::BrowserContext* context); 29 explicit TCPSocketEventDispatcher(content::BrowserContext* context);
30 virtual ~TCPSocketEventDispatcher(); 30 virtual ~TCPSocketEventDispatcher();
31 31
32 // Socket is active, start receving from it. 32 // Socket is active, start receving from it.
33 void OnSocketConnect(const std::string& extension_id, int socket_id); 33 void OnSocketConnect(const std::string& extension_id, int socket_id);
34 34
35 // Socket is active again, start receiving data from it. 35 // Socket is active again, start receiving data from it.
36 void OnSocketResume(const std::string& extension_id, int socket_id); 36 void OnSocketResume(const std::string& extension_id, int socket_id);
37 37
38 // BrowserContextKeyedAPI implementation. 38 // BrowserContextKeyedAPI implementation.
39 static BrowserContextKeyedAPIFactory<TCPSocketEventDispatcher>* 39 static BrowserContextKeyedAPIFactory<TCPSocketEventDispatcher>*
40 GetFactoryInstance(); 40 GetFactoryInstance();
41 41
42 // Convenience method to get the SocketEventDispatcher for a profile. 42 // Convenience method to get the SocketEventDispatcher for a profile.
43 static TCPSocketEventDispatcher* Get(content::BrowserContext* context); 43 static TCPSocketEventDispatcher* Get(content::BrowserContext* context);
44 44
45 private: 45 private:
46 typedef ApiResourceManager<ResumableTCPSocket>::ApiResourceData SocketData; 46 typedef ApiResourceManager<ResumableTCPSocket>::ApiResourceData SocketData;
47 friend class BrowserContextKeyedAPIFactory<TCPSocketEventDispatcher>; 47 friend class BrowserContextKeyedAPIFactory<TCPSocketEventDispatcher>;
48 // BrowserContextKeyedAPI implementation. 48 // BrowserContextKeyedAPI implementation.
49 static const char* service_name() { 49 static const char* service_name() { return "TCPSocketEventDispatcher"; }
50 return "TCPSocketEventDispatcher";
51 }
52 static const bool kServiceHasOwnInstanceInIncognito = true; 50 static const bool kServiceHasOwnInstanceInIncognito = true;
53 static const bool kServiceIsNULLWhileTesting = true; 51 static const bool kServiceIsNULLWhileTesting = true;
54 52
55 // base::Bind supports methods with up to 6 parameters. ReadParams is used 53 // base::Bind supports methods with up to 6 parameters. ReadParams is used
56 // as a workaround that limitation for invoking StartReceive. 54 // as a workaround that limitation for invoking StartReceive.
57 struct ReadParams { 55 struct ReadParams {
58 ReadParams(); 56 ReadParams();
59 ~ReadParams(); 57 ~ReadParams();
60 58
61 content::BrowserThread::ID thread_id; 59 content::BrowserThread::ID thread_id;
(...skipping 21 matching lines...) Expand all
83 static void DispatchEvent(void* browser_context_id, 81 static void DispatchEvent(void* browser_context_id,
84 const std::string& extension_id, 82 const std::string& extension_id,
85 scoped_ptr<Event> event); 83 scoped_ptr<Event> event);
86 84
87 // Usually IO thread (except for unit testing). 85 // Usually IO thread (except for unit testing).
88 content::BrowserThread::ID thread_id_; 86 content::BrowserThread::ID thread_id_;
89 content::BrowserContext* const browser_context_; 87 content::BrowserContext* const browser_context_;
90 scoped_refptr<SocketData> sockets_; 88 scoped_refptr<SocketData> sockets_;
91 }; 89 };
92 90
93 } // namespace api 91 } // namespace core_api
94 } // namespace extensions 92 } // namespace extensions
95 93
96 #endif // CHROME_BROWSER_EXTENSIONS_API_SOCKETS_TCP_TCP_SOCKET_EVENT_DISPATCHER _H_ 94 #endif // EXTENSIONS_BROWSER_API_SOCKETS_TCP_TCP_SOCKET_EVENT_DISPATCHER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698