11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/message_loop/message_loop.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/gcm_driver/gcm_channel_status_request.h" 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "net/url_request/test_url_fetcher_factory.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "net/url_request/url_request_test_util.h" 91675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch#include "sync/protocol/experiment_status.pb.h" 101675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch#include "sync/protocol/experiments_specifics.pb.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "testing/gtest/include/gtest/gtest.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace gcm { 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass GCMChannelStatusRequestTest : public testing::Test { 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public: 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GCMChannelStatusRequestTest(); 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~GCMChannelStatusRequestTest(); 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci protected: 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci enum GCMStatus { 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NOT_SPECIFIED, 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GCM_ENABLED, 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GCM_DISABLED, 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }; 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void StartRequest(); 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetResponseStatusAndString(net::HttpStatusCode status_code, 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& response_body); 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetResponseProtoData(GCMStatus status, int poll_interval_seconds); 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void CompleteFetch(); 321675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch void OnRequestCompleted(bool update_received, 331675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch bool enabled, 341675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch int poll_interval_seconds); 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<GCMChannelStatusRequest> request_; 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::MessageLoop message_loop_; 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci net::TestURLFetcherFactory url_fetcher_factory_; 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_refptr<net::TestURLRequestContextGetter> url_request_context_getter_; 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool request_callback_invoked_; 411675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch bool update_received_; 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool enabled_; 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int poll_interval_seconds_; 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciGCMChannelStatusRequestTest::GCMChannelStatusRequestTest() 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : url_request_context_getter_(new net::TestURLRequestContextGetter( 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci message_loop_.message_loop_proxy())), 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci request_callback_invoked_(false), 501675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch update_received_(false), 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci enabled_(true), 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci poll_interval_seconds_(0) { 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciGCMChannelStatusRequestTest::~GCMChannelStatusRequestTest() { 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid GCMChannelStatusRequestTest::StartRequest() { 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci request_.reset(new GCMChannelStatusRequest( 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci url_request_context_getter_.get(), 611675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch "http://channel.status.request.com/", 621675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch "user agent string", 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Bind(&GCMChannelStatusRequestTest::OnRequestCompleted, 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Unretained(this)))); 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci request_->Start(); 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid GCMChannelStatusRequestTest::SetResponseStatusAndString( 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci net::HttpStatusCode status_code, 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& response_body) { 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(0); 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(fetcher); 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci fetcher->set_response_code(status_code); 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci fetcher->SetResponseString(response_body); 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid GCMChannelStatusRequestTest::SetResponseProtoData( 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GCMStatus status, int poll_interval_seconds) { 791675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch sync_pb::ExperimentStatusResponse response_proto; 801675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch if (status != NOT_SPECIFIED) { 811675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch sync_pb::ExperimentsSpecifics* experiment_specifics = 821675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch response_proto.add_experiment(); 831675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch experiment_specifics->mutable_gcm_channel()->set_enabled(status == 841675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch GCM_ENABLED); 851675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch } 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Zero |poll_interval_seconds| means the optional field is not set. 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (poll_interval_seconds) 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci response_proto.set_poll_interval_seconds(poll_interval_seconds); 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::string response_string; 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci response_proto.SerializeToString(&response_string); 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetResponseStatusAndString(net::HTTP_OK, response_string); 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid GCMChannelStatusRequestTest::CompleteFetch() { 971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci request_callback_invoked_ = false; 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(0); 991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(fetcher); 1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci fetcher->delegate()->OnURLFetchComplete(fetcher); 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid GCMChannelStatusRequestTest::OnRequestCompleted( 1041675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch bool update_received, bool enabled, int poll_interval_seconds) { 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci request_callback_invoked_ = true; 1061675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch update_received_ = update_received; 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci enabled_ = enabled; 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci poll_interval_seconds_ = poll_interval_seconds; 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1111675a649fd7a8b3cb80ffddae2dc181f122353c5Ben MurdochTEST_F(GCMChannelStatusRequestTest, RequestData) { 1121675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch StartRequest(); 1131675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch 1141675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(0); 1151675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch ASSERT_TRUE(fetcher); 1161675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch 1171675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_EQ(GURL(request_->channel_status_request_url_), 1181675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch fetcher->GetOriginalURL()); 1191675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch 1201675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch net::HttpRequestHeaders headers; 1211675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch fetcher->GetExtraRequestHeaders(&headers); 1221675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch std::string user_agent_header; 1231675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch headers.GetHeader("User-Agent", &user_agent_header); 1241675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_FALSE(user_agent_header.empty()); 1251675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_EQ(request_->user_agent_, user_agent_header); 1261675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch 1271675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch std::string upload_data = fetcher->upload_data(); 1281675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_FALSE(upload_data.empty()); 1291675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch sync_pb::ExperimentStatusRequest proto_data; 1301675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch proto_data.ParseFromString(upload_data); 1311675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_EQ(1, proto_data.experiment_name_size()); 1321675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_EQ("gcm_channel", proto_data.experiment_name(0)); 1331675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch} 1341675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch 1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(GCMChannelStatusRequestTest, ResponseHttpStatusNotOK) { 1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci StartRequest(); 1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetResponseStatusAndString(net::HTTP_UNAUTHORIZED, ""); 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CompleteFetch(); 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(request_callback_invoked_); 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(GCMChannelStatusRequestTest, ResponseEmpty) { 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci StartRequest(); 1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetResponseStatusAndString(net::HTTP_OK, ""); 1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CompleteFetch(); 1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1481675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_TRUE(request_callback_invoked_); 1491675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_FALSE(update_received_); 1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(GCMChannelStatusRequestTest, ResponseNotInProtoFormat) { 1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci StartRequest(); 1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetResponseStatusAndString(net::HTTP_OK, "foo"); 1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CompleteFetch(); 1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(request_callback_invoked_); 1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(GCMChannelStatusRequestTest, ResponseEmptyProtoData) { 1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci StartRequest(); 1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetResponseProtoData(NOT_SPECIFIED, 0); 1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CompleteFetch(); 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1651675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_TRUE(request_callback_invoked_); 1661675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_FALSE(update_received_); 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(GCMChannelStatusRequestTest, ResponseWithDisabledStatus) { 1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci StartRequest(); 1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetResponseProtoData(GCM_DISABLED, 0); 1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CompleteFetch(); 1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(request_callback_invoked_); 1751675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_TRUE(update_received_); 1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(enabled_); 1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ( 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GCMChannelStatusRequest::default_poll_interval_seconds(), 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci poll_interval_seconds_); 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(GCMChannelStatusRequestTest, ResponseWithEnabledStatus) { 1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci StartRequest(); 1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetResponseProtoData(GCM_ENABLED, 0); 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CompleteFetch(); 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(request_callback_invoked_); 1881675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_TRUE(update_received_); 1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(enabled_); 1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ( 1911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GCMChannelStatusRequest::default_poll_interval_seconds(), 1921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci poll_interval_seconds_); 1931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(GCMChannelStatusRequestTest, ResponseWithPollInterval) { 1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Setting a poll interval 15 minutes longer than the minimum interval we 1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // enforce. 1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int poll_interval_seconds = 1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GCMChannelStatusRequest::min_poll_interval_seconds() + 15 * 60; 2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci StartRequest(); 2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetResponseProtoData(NOT_SPECIFIED, poll_interval_seconds); 2021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CompleteFetch(); 2031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(request_callback_invoked_); 2051675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_TRUE(update_received_); 2061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(enabled_); 2071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(poll_interval_seconds, poll_interval_seconds_); 2081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(GCMChannelStatusRequestTest, ResponseWithShortPollInterval) { 2111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Setting a poll interval 15 minutes shorter than the minimum interval we 2121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // enforce. 2131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int poll_interval_seconds = 2141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GCMChannelStatusRequest::min_poll_interval_seconds() - 15 * 60; 2151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci StartRequest(); 2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetResponseProtoData(NOT_SPECIFIED, poll_interval_seconds); 2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CompleteFetch(); 2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(request_callback_invoked_); 2201675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_TRUE(update_received_); 2211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(enabled_); 2221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(GCMChannelStatusRequest::min_poll_interval_seconds(), 2231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci poll_interval_seconds_); 2241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(GCMChannelStatusRequestTest, ResponseWithDisabledStatusAndPollInterval) { 2271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int poll_interval_seconds = 2281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GCMChannelStatusRequest::min_poll_interval_seconds() + 15 * 60; 2291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci StartRequest(); 2301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetResponseProtoData(GCM_DISABLED, poll_interval_seconds); 2311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CompleteFetch(); 2321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(request_callback_invoked_); 2341675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch EXPECT_TRUE(update_received_); 2351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(enabled_); 2361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(poll_interval_seconds, poll_interval_seconds_); 2371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace gcm 240