// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/prefs/pref_service.h"
#include "base/run_loop.h"
#include "chrome/browser/extensions/api/gcm/gcm_api.h"
#include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/browser/services/gcm/gcm_client_factory.h"
#include "chrome/browser/services/gcm/gcm_profile_service_factory.h"
#include "chrome/common/chrome_switches.h"
-#include "chrome/common/extensions/features/feature_channel.h"
+#include "chrome/common/pref_names.h"
#include "chrome/test/base/ui_test_utils.h"
namespace {
const Extension* LoadTestExtension(const std::string& extension_path,
const std::string& page_name);
gcm::FakeGCMProfileService* service() const;
- bool ShouldSkipTest() const;
private:
gcm::FakeGCMProfileService* fake_gcm_profile_service_;
}
void GcmApiTest::SetUpOnMainThread() {
+ // Enable GCM such that tests could be run on all channels.
+ browser()->profile()->GetPrefs()->SetBoolean(prefs::kGCMChannelEnabled, true);
+
gcm::GCMProfileServiceFactory::GetInstance()->SetTestingFactory(
browser()->profile(), &gcm::FakeGCMProfileService::Build);
fake_gcm_profile_service_ = static_cast<gcm::FakeGCMProfileService*>(
const Extension* GcmApiTest::LoadTestExtension(
const std::string& extension_path,
const std::string& page_name) {
- // TODO(jianli): Once the GCM API enters stable, remove |channel|.
- ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_UNKNOWN);
-
const Extension* extension =
LoadExtension(test_data_dir_.AppendASCII(extension_path));
if (extension) {
return extension;
}
-bool GcmApiTest::ShouldSkipTest() const {
- // TODO(jianli): Remove this once the GCM API enters stable.
- return chrome::VersionInfo::GetChannel() ==
- chrome::VersionInfo::CHANNEL_STABLE;
-}
-
IN_PROC_BROWSER_TEST_F(GcmApiTest, RegisterValidation) {
- if (ShouldSkipTest())
- return;
-
ASSERT_TRUE(RunExtensionTest("gcm/functions/register_validation"));
}
IN_PROC_BROWSER_TEST_F(GcmApiTest, Register) {
- if (ShouldSkipTest())
- return;
-
StartCollecting();
ASSERT_TRUE(RunExtensionTest("gcm/functions/register"));
}
IN_PROC_BROWSER_TEST_F(GcmApiTest, Unregister) {
- if (ShouldSkipTest())
- return;
-
service()->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS);
service()->AddExpectedUnregisterResponse(gcm::GCMClient::SERVER_ERROR);
}
IN_PROC_BROWSER_TEST_F(GcmApiTest, SendValidation) {
- if (ShouldSkipTest())
- return;
-
ASSERT_TRUE(RunExtensionTest("gcm/functions/send"));
}
IN_PROC_BROWSER_TEST_F(GcmApiTest, SendMessageData) {
- if (ShouldSkipTest())
- return;
-
StartCollecting();
ASSERT_TRUE(RunExtensionTest("gcm/functions/send_message_data"));
service()->last_sent_message();
gcm::GCMClient::MessageData::const_iterator iter;
+ EXPECT_EQ(100, message.time_to_live);
+
EXPECT_TRUE((iter = message.data.find("key1")) != message.data.end());
EXPECT_EQ("value1", iter->second);
EXPECT_EQ("value2", iter->second);
}
+IN_PROC_BROWSER_TEST_F(GcmApiTest, SendMessageDefaultTTL) {
+ StartCollecting();
+ ASSERT_TRUE(RunExtensionTest("gcm/functions/send_message_default_ttl"));
+
+ EXPECT_EQ("destination-id", service()->last_receiver_id());
+ const gcm::GCMClient::OutgoingMessage& message =
+ service()->last_sent_message();
+ gcm::GCMClient::MessageData::const_iterator iter;
+
+ EXPECT_EQ(2419200, message.time_to_live);
+}
+
IN_PROC_BROWSER_TEST_F(GcmApiTest, OnMessagesDeleted) {
ResultCatcher catcher;
catcher.RestrictToProfile(profile());
}
IN_PROC_BROWSER_TEST_F(GcmApiTest, Incognito) {
- if (ShouldSkipTest())
- return;
-
ResultCatcher catcher;
catcher.RestrictToProfile(profile());
ResultCatcher incognito_catcher;