OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_TEST_HELPER_H_ | 5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_TEST_HELPER_H_ |
6 #define CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_TEST_HELPER_H_ | 6 #define CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_TEST_HELPER_H_ |
7 | 7 |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 14 matching lines...) Expand all Loading... |
25 | 25 |
26 // In-Process EmbeddedWorker test helper. | 26 // In-Process EmbeddedWorker test helper. |
27 // | 27 // |
28 // Usage: create an instance of this class for a ServiceWorkerContextCore | 28 // Usage: create an instance of this class for a ServiceWorkerContextCore |
29 // to test browser-side embedded worker code without creating a child process. | 29 // to test browser-side embedded worker code without creating a child process. |
30 // | 30 // |
31 // By default this class just notifies back WorkerStarted and WorkerStopped | 31 // By default this class just notifies back WorkerStarted and WorkerStopped |
32 // for StartWorker and StopWorker requests. The default implementation | 32 // for StartWorker and StopWorker requests. The default implementation |
33 // also returns success for event messages (e.g. InstallEvent, FetchEvent). | 33 // also returns success for event messages (e.g. InstallEvent, FetchEvent). |
34 // | 34 // |
35 // Alternatively consumers can subclass this helper and override | 35 // Alternatively consumers can subclass this helper and override On*() |
36 // OnStartWorker(), OnStopWorker(), OnSendMessageToWorker(), | 36 // methods to add their own logic/verification code. |
37 // OnInstallEvent(), OnFetchEvent() etc to add their own | |
38 // logic/verification code. | |
39 // | 37 // |
40 // See embedded_worker_instance_unittest.cc for example usages. | 38 // See embedded_worker_instance_unittest.cc for example usages. |
41 // | 39 // |
42 class EmbeddedWorkerTestHelper : public IPC::Sender, | 40 class EmbeddedWorkerTestHelper : public IPC::Sender, |
43 public IPC::Listener { | 41 public IPC::Listener { |
44 public: | 42 public: |
45 // Initialize this helper for |context|, and enable this as an IPC | 43 // Initialize this helper for |context|, and enable this as an IPC |
46 // sender for |mock_render_process_id|. | 44 // sender for |mock_render_process_id|. |
47 EmbeddedWorkerTestHelper(ServiceWorkerContextCore* context, | 45 EmbeddedWorkerTestHelper(ServiceWorkerContextCore* context, |
48 int mock_render_process_id); | 46 int mock_render_process_id); |
(...skipping 11 matching lines...) Expand all Loading... |
60 | 58 |
61 // IPC sink for EmbeddedWorker messages. | 59 // IPC sink for EmbeddedWorker messages. |
62 IPC::TestSink* ipc_sink() { return &sink_; } | 60 IPC::TestSink* ipc_sink() { return &sink_; } |
63 // Inner IPC sink for script context messages sent via EmbeddedWorker. | 61 // Inner IPC sink for script context messages sent via EmbeddedWorker. |
64 IPC::TestSink* inner_ipc_sink() { return &inner_sink_; } | 62 IPC::TestSink* inner_ipc_sink() { return &inner_sink_; } |
65 | 63 |
66 protected: | 64 protected: |
67 // Called when StartWorker, StopWorker and SendMessageToWorker message | 65 // Called when StartWorker, StopWorker and SendMessageToWorker message |
68 // is sent to the embedded worker. Override if necessary. By default | 66 // is sent to the embedded worker. Override if necessary. By default |
69 // they verify given parameters and: | 67 // they verify given parameters and: |
70 // - call SimulateWorkerStarted for OnStartWorker | 68 // - OnStartWorker calls SimulateWorkerStarted |
71 // - call SimulateWorkerStoped for OnStopWorker | 69 // - OnStopWorker calls SimulateWorkerStoped |
72 // - call OnFooEvent handlers for known events for OnSendMessageToWorker | 70 // - OnSendMessageToWorker calls the message's respective On*Event handler |
73 virtual void OnStartWorker(int embedded_worker_id, | 71 virtual void OnStartWorker(int embedded_worker_id, |
74 int64 service_worker_version_id, | 72 int64 service_worker_version_id, |
75 const GURL& script_url); | 73 const GURL& script_url); |
76 virtual void OnStopWorker(int embedded_worker_id); | 74 virtual void OnStopWorker(int embedded_worker_id); |
77 virtual bool OnSendMessageToWorker(int thread_id, | 75 virtual bool OnSendMessageToWorker(int thread_id, |
78 int embedded_worker_id, | 76 int embedded_worker_id, |
79 int request_id, | 77 int request_id, |
80 const IPC::Message& message); | 78 const IPC::Message& message); |
81 | 79 |
82 // Called when InstallEvent, FetchEvent message is sent to the embedded | 80 // On*Event handlers. Called by the default implementation of |
83 // worker. These are called via OnSendMessageToWorker()'s default | 81 // OnSendMessageToWorker when events are sent to the embedded |
84 // implementation. By default they just return success via | 82 // worker. By default they just return success via |
85 // SimulateSendMessageToBrowser. | 83 // SimulateSendMessageToBrowser. |
| 84 virtual void OnActivateEvent(int embedded_worker_id, int request_id); |
86 virtual void OnInstallEvent(int embedded_worker_id, | 85 virtual void OnInstallEvent(int embedded_worker_id, |
87 int request_id, | 86 int request_id, |
88 int active_version_id); | 87 int active_version_id); |
89 virtual void OnFetchEvent(int embedded_worker_id, | 88 virtual void OnFetchEvent(int embedded_worker_id, |
90 int request_id, | 89 int request_id, |
91 const ServiceWorkerFetchRequest& request); | 90 const ServiceWorkerFetchRequest& request); |
92 | 91 |
93 // Call this to simulate sending WorkerStarted, WorkerStopped and | 92 // Call this to simulate sending WorkerStarted, WorkerStopped and |
94 // SendMessageToBrowser to the browser. | 93 // SendMessageToBrowser to the browser. |
95 void SimulateWorkerStarted(int thread_id, int embedded_worker_id); | 94 void SimulateWorkerStarted(int thread_id, int embedded_worker_id); |
96 void SimulateWorkerStopped(int embedded_worker_id); | 95 void SimulateWorkerStopped(int embedded_worker_id); |
97 void SimulateSendMessageToBrowser(int embedded_worker_id, | 96 void SimulateSendMessageToBrowser(int embedded_worker_id, |
98 int request_id, | 97 int request_id, |
99 const IPC::Message& message); | 98 const IPC::Message& message); |
100 | 99 |
101 private: | 100 private: |
102 void OnStartWorkerStub(int embedded_worker_id, | 101 void OnStartWorkerStub(int embedded_worker_id, |
103 int64 service_worker_version_id, | 102 int64 service_worker_version_id, |
104 const GURL& script_url); | 103 const GURL& script_url); |
105 void OnStopWorkerStub(int embedded_worker_id); | 104 void OnStopWorkerStub(int embedded_worker_id); |
106 void OnSendMessageToWorkerStub(int thread_id, | 105 void OnSendMessageToWorkerStub(int thread_id, |
107 int embedded_worker_id, | 106 int embedded_worker_id, |
108 int request_id, | 107 int request_id, |
109 const IPC::Message& message); | 108 const IPC::Message& message); |
| 109 void OnActivateEventStub(); |
110 void OnInstallEventStub(int active_version_id); | 110 void OnInstallEventStub(int active_version_id); |
111 void OnFetchEventStub(const ServiceWorkerFetchRequest& request); | 111 void OnFetchEventStub(const ServiceWorkerFetchRequest& request); |
112 | 112 |
113 EmbeddedWorkerRegistry* registry(); | 113 EmbeddedWorkerRegistry* registry(); |
114 | 114 |
115 base::WeakPtr<ServiceWorkerContextCore> context_; | 115 base::WeakPtr<ServiceWorkerContextCore> context_; |
116 | 116 |
117 IPC::TestSink sink_; | 117 IPC::TestSink sink_; |
118 IPC::TestSink inner_sink_; | 118 IPC::TestSink inner_sink_; |
119 | 119 |
120 int next_thread_id_; | 120 int next_thread_id_; |
121 | 121 |
122 // Updated each time SendMessageToWorker message is received. | 122 // Updated each time SendMessageToWorker message is received. |
123 int current_embedded_worker_id_; | 123 int current_embedded_worker_id_; |
124 int current_request_id_; | 124 int current_request_id_; |
125 | 125 |
126 base::WeakPtrFactory<EmbeddedWorkerTestHelper> weak_factory_; | 126 base::WeakPtrFactory<EmbeddedWorkerTestHelper> weak_factory_; |
127 | 127 |
128 DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerTestHelper); | 128 DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerTestHelper); |
129 }; | 129 }; |
130 | 130 |
131 } // namespace content | 131 } // namespace content |
132 | 132 |
133 #endif // CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_TEST_HELPER_H_ | 133 #endif // CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_TEST_HELPER_H_ |
OLD | NEW |