Chromium Code Reviews| Index: components/copresence/rpc/rpc_handler.cc |
| diff --git a/components/copresence/rpc/rpc_handler.cc b/components/copresence/rpc/rpc_handler.cc |
| index 2ca127ea7955fca154b1e9750389a24db0e5695b..1976ec6565ff936ae083399fbcb0099e752f7bc0 100644 |
| --- a/components/copresence/rpc/rpc_handler.cc |
| +++ b/components/copresence/rpc/rpc_handler.cc |
| @@ -119,11 +119,11 @@ BroadcastScanConfiguration ExtractTokenExchangeStrategy( |
| // Strategies for subscriptions. |
| if (request.has_manage_subscriptions_request()) { |
| - const RepeatedPtrField<Subscription> messages = |
| + const RepeatedPtrField<Subscription> subscriptions = |
| request.manage_subscriptions_request().subscription(); |
| - for (int i = 0; i < messages.size(); ++i) { |
| + for (int i = 0; i < subscriptions.size(); ++i) { |
| BroadcastScanConfiguration config = |
| - GetBroadcastScanConfig(messages.Get(i)); |
| + GetBroadcastScanConfig(subscriptions.Get(i)); |
| broadcast_only = broadcast_only || config == BROADCAST_ONLY; |
| scan_only = scan_only || config == SCAN_ONLY; |
| if (config == BROADCAST_AND_SCAN || (broadcast_only && scan_only)) |
| @@ -194,6 +194,33 @@ ClientVersion* CreateVersion(const std::string& client, |
| return version; |
| } |
| +OptInStateFilter* CreateOptedInOrOutFilter() { |
| + OptInStateFilter* filter = new OptInStateFilter; |
| + filter->add_allowed_opt_in_state(copresence::OPTED_IN); |
| + filter->add_allowed_opt_in_state(copresence::OPTED_OUT); |
| + return filter; |
| +} |
| + |
| +void AllowOptedOutMessages(ReportRequest* request) { |
|
rkc
2014/08/12 03:38:19
This anonymous namespace is getting huge. We shoul
Charlie
2014/08/12 04:36:14
Added a TODO. Keep in mind that ExtractTokenExchan
|
| + RepeatedPtrField<PublishedMessage>* messages = |
|
rkc
2014/08/12 03:38:19
This is a pattern that we'll be following 3 places
Charlie
2014/08/12 04:36:14
Another TODO. I think Ben probably doesn't want to
|
| + request->mutable_manage_messages_request()->mutable_message_to_publish(); |
| + for (int i = 0; i < messages->size(); ++i) { |
| + PublishedMessage* message = messages->Mutable(i); |
| + if (!message->has_opt_in_state_filter()) |
| + message->set_allocated_opt_in_state_filter(CreateOptedInOrOutFilter()); |
| + } |
| + |
| + RepeatedPtrField<Subscription>* subscriptions = |
| + request->mutable_manage_subscriptions_request()->mutable_subscription(); |
| + for (int i = 0; i < subscriptions->size(); ++i) { |
| + Subscription* subscription = subscriptions->Mutable(i); |
| + if (!subscription->has_opt_in_state_filter()) { |
| + subscription->set_allocated_opt_in_state_filter( |
| + CreateOptedInOrOutFilter()); |
| + } |
| + } |
| +} |
| + |
| } // namespace |
| // Public methods |
| @@ -253,6 +280,7 @@ void RpcHandler::SendReportRequest(scoped_ptr<ReportRequest> request, |
| request->mutable_update_signals_request()->set_allocated_state( |
| GetDeviceCapabilities(*request).release()); |
| + AllowOptedOutMessages(request.get()); |
| SendServerRequest(kReportRequestRpcName, |
| app_id, |
| request.Pass(), |