| 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 |