diff options
author | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-01 23:20:52 +0000 |
---|---|---|
committer | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-01 23:20:52 +0000 |
commit | d896a73f79480b96ea80b1827733841a9ab7de43 (patch) | |
tree | 1f8d528402da9107ce79cb12121457fc496fe4b4 /ceee | |
parent | 79bf9949adda62e5fb888e71f79ccbcf19bbd8ba (diff) | |
download | chromium_src-d896a73f79480b96ea80b1827733841a9ab7de43.zip chromium_src-d896a73f79480b96ea80b1827733841a9ab7de43.tar.gz chromium_src-d896a73f79480b96ea80b1827733841a9ab7de43.tar.bz2 |
Ensure that just started broker doesn't get events addressed to dead instance.
BUG=64967
TEST=none
Review URL: http://codereview.chromium.org/5481002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67905 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ceee')
-rw-r--r-- | ceee/ie/broker/broker_rpc_client.cc | 3 | ||||
-rw-r--r-- | ceee/ie/broker/broker_rpc_lib.idl | 2 | ||||
-rw-r--r-- | ceee/ie/broker/broker_rpc_server.cc | 1 | ||||
-rw-r--r-- | ceee/ie/broker/broker_rpc_unittest.cc | 6 |
4 files changed, 8 insertions, 4 deletions
diff --git a/ceee/ie/broker/broker_rpc_client.cc b/ceee/ie/broker/broker_rpc_client.cc index e0e5586..4142475 100644 --- a/ceee/ie/broker/broker_rpc_client.cc +++ b/ceee/ie/broker/broker_rpc_client.cc @@ -128,7 +128,8 @@ void BrokerRpcClient::Disconnect() { HRESULT BrokerRpcClient::FireEvent(const char* event_name, const char* event_args) { RpcTryExcept { - BrokerRpcClient_FireEvent(binding_handle_, event_name, event_args); + BrokerRpcClient_FireEvent(binding_handle_, context_, event_name, + event_args); return S_OK; } RpcExcept(HandleRpcException(RpcExceptionCode())) { LogRpcException("RPC error in FireEvent", RpcExceptionCode()); diff --git a/ceee/ie/broker/broker_rpc_lib.idl b/ceee/ie/broker/broker_rpc_lib.idl index 0574ac0..1992931 100644 --- a/ceee/ie/broker/broker_rpc_lib.idl +++ b/ceee/ie/broker/broker_rpc_lib.idl @@ -27,8 +27,10 @@ void Disconnect( // @name Remote calls. // @{ // Fires event to broker. +// @param context is required to avoid execution by wrong broker instance. void FireEvent( [in] handle_t binding_handle, + [in] BrokerContextHandle context, [in, string] const char* event_name, [in, string] const char* event_args); diff --git a/ceee/ie/broker/broker_rpc_server.cc b/ceee/ie/broker/broker_rpc_server.cc index 0c07c38..bd4ebdd 100644 --- a/ceee/ie/broker/broker_rpc_server.cc +++ b/ceee/ie/broker/broker_rpc_server.cc @@ -127,6 +127,7 @@ void __RPC_USER BrokerContextHandle_rundown(BrokerContextHandle context) { void BrokerRpcServer_FireEvent( handle_t binding_handle, + BrokerContextHandle context, const char* event_name, const char* event_args) { DCHECK(ChromePostman::GetInstance()); diff --git a/ceee/ie/broker/broker_rpc_unittest.cc b/ceee/ie/broker/broker_rpc_unittest.cc index 74d0d7a..9795338 100644 --- a/ceee/ie/broker/broker_rpc_unittest.cc +++ b/ceee/ie/broker/broker_rpc_unittest.cc @@ -30,8 +30,8 @@ MOCK_STATIC_CLASS_BEGIN(BrokerRpcMock) MOCK_STATIC_INIT(BrokerRpcServer_SendUmaHistogramData); MOCK_STATIC_INIT_END() MOCK_STATIC0(std::wstring, , GetRpcEndPointAddress); - MOCK_STATIC3(void, , BrokerRpcServer_FireEvent, handle_t, const char*, - const char*); + MOCK_STATIC4(void, , BrokerRpcServer_FireEvent, handle_t, BrokerContextHandle, + const char*, const char*); MOCK_STATIC3(void, , BrokerRpcServer_SendUmaHistogramTimes, handle_t, const char*, int); MOCK_STATIC6(void, , BrokerRpcServer_SendUmaHistogramData, handle_t, @@ -79,7 +79,7 @@ TEST_F(BrokerRpcTest, RpcCalls) { const char* args = "args"; EXPECT_CALL(broker_rpc_mock_, - BrokerRpcServer_FireEvent(_, StrEq(name), StrEq(args))) + BrokerRpcServer_FireEvent(_, _, StrEq(name), StrEq(args))) .Times(1); ASSERT_HRESULT_SUCCEEDED(client.FireEvent(name, args)); |