summaryrefslogtreecommitdiffstats
path: root/ceee
diff options
context:
space:
mode:
authorvitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-01 23:20:52 +0000
committervitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-01 23:20:52 +0000
commitd896a73f79480b96ea80b1827733841a9ab7de43 (patch)
tree1f8d528402da9107ce79cb12121457fc496fe4b4 /ceee
parent79bf9949adda62e5fb888e71f79ccbcf19bbd8ba (diff)
downloadchromium_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.cc3
-rw-r--r--ceee/ie/broker/broker_rpc_lib.idl2
-rw-r--r--ceee/ie/broker/broker_rpc_server.cc1
-rw-r--r--ceee/ie/broker/broker_rpc_unittest.cc6
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));