| Index: ppapi/proxy/ppapi_proxy_test.h
|
| diff --git a/ppapi/proxy/ppapi_proxy_test.h b/ppapi/proxy/ppapi_proxy_test.h
|
| index 9c76b847b4f80b69e512182f741d9593d845b881..adf2826e1bb04f63f5c0156049e58e413faab977 100644
|
| --- a/ppapi/proxy/ppapi_proxy_test.h
|
| +++ b/ppapi/proxy/ppapi_proxy_test.h
|
| @@ -34,6 +34,8 @@ class ProxyTestHarnessBase {
|
| PP_Instance pp_instance() const { return pp_instance_; }
|
| ResourceMessageTestSink& sink() { return sink_; }
|
|
|
| + // This should lazily initialize the globals so they are constructed on
|
| + // the thread of use.
|
| virtual PpapiGlobals* GetGlobals() = 0;
|
| // Returns either the plugin or host dispatcher, depending on the test.
|
| virtual Dispatcher* GetDispatcher() = 0;
|
| @@ -83,14 +85,14 @@ class PluginProxyTestHarness : public ProxyTestHarnessBase {
|
|
|
| PluginDispatcher* plugin_dispatcher() { return plugin_dispatcher_.get(); }
|
| PluginResourceTracker& resource_tracker() {
|
| - return *plugin_globals_.plugin_resource_tracker();
|
| + return *plugin_globals_->plugin_resource_tracker();
|
| }
|
| PluginVarTracker& var_tracker() {
|
| - return *plugin_globals_.plugin_var_tracker();
|
| + return *plugin_globals_->plugin_var_tracker();
|
| }
|
|
|
| // ProxyTestHarnessBase implementation.
|
| - virtual PpapiGlobals* GetGlobals() { return &plugin_globals_; }
|
| + virtual PpapiGlobals* GetGlobals();
|
| virtual Dispatcher* GetDispatcher();
|
| virtual void SetUpHarness();
|
| virtual void SetUpHarnessWithChannel(const IPC::ChannelHandle& channel_handle,
|
| @@ -111,6 +113,10 @@ class PluginProxyTestHarness : public ProxyTestHarnessBase {
|
| shutdown_event_ = shutdown_event;
|
| }
|
|
|
| + void set_browser_sender(IPC::Sender* browser_sender) {
|
| + browser_sender_ = browser_sender;
|
| + }
|
| +
|
| // ProxyChannel::Delegate implementation.
|
| virtual base::MessageLoopProxy* GetIPCMessageLoop() OVERRIDE;
|
| virtual base::WaitableEvent* GetShutdownEvent() OVERRIDE;
|
| @@ -135,12 +141,13 @@ class PluginProxyTestHarness : public ProxyTestHarnessBase {
|
| base::MessageLoopProxy* ipc_message_loop_; // Weak
|
| base::WaitableEvent* shutdown_event_; // Weak
|
| std::set<PP_Instance> instance_id_set_;
|
| + IPC::Sender* browser_sender_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(PluginDelegateMock);
|
| };
|
|
|
| private:
|
| - PluginGlobals plugin_globals_;
|
| + scoped_ptr<PluginGlobals> plugin_globals_;
|
|
|
| scoped_ptr<PluginDispatcher> plugin_dispatcher_;
|
| PluginDelegateMock plugin_delegate_mock_;
|
| @@ -165,14 +172,14 @@ class HostProxyTestHarness : public ProxyTestHarnessBase {
|
|
|
| HostDispatcher* host_dispatcher() { return host_dispatcher_.get(); }
|
| ResourceTracker& resource_tracker() {
|
| - return *host_globals_.GetResourceTracker();
|
| + return *host_globals_->GetResourceTracker();
|
| }
|
| VarTracker& var_tracker() {
|
| - return *host_globals_.GetVarTracker();
|
| + return *host_globals_->GetVarTracker();
|
| }
|
|
|
| // ProxyTestBase implementation.
|
| - virtual PpapiGlobals* GetGlobals() { return &host_globals_; }
|
| + virtual PpapiGlobals* GetGlobals();
|
| virtual Dispatcher* GetDispatcher();
|
| virtual void SetUpHarness();
|
| virtual void SetUpHarnessWithChannel(const IPC::ChannelHandle& channel_handle,
|
| @@ -211,7 +218,7 @@ class HostProxyTestHarness : public ProxyTestHarnessBase {
|
| private:
|
| class MockSyncMessageStatusReceiver;
|
|
|
| - ppapi::TestGlobals host_globals_;
|
| + scoped_ptr<ppapi::TestGlobals> host_globals_;
|
| scoped_ptr<HostDispatcher> host_dispatcher_;
|
| DelegateMock delegate_mock_;
|
|
|
| @@ -250,6 +257,12 @@ class TwoWayTest : public testing::Test {
|
| virtual void SetUp();
|
| virtual void TearDown();
|
|
|
| + protected:
|
| + // Post a task to the thread where the remote harness lives. This
|
| + // is typically used to test the state of the var tracker on the plugin
|
| + // thread. This runs the task synchronously for convenience.
|
| + void PostTaskOnRemoteHarness(const base::Closure& task);
|
| +
|
| private:
|
| TwoWayTestMode test_mode_;
|
| HostProxyTestHarness host_;
|
|
|