| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/api/push_messaging/push_messaging_api.h" | 5 #include "chrome/browser/extensions/api/push_messaging/push_messaging_api.h" |
| 6 | 6 |
| 7 #include "apps/launcher.h" | 7 #include "apps/launcher.h" |
| 8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
| 9 #include "chrome/browser/extensions/api/push_messaging/push_messaging_invalidati
on_handler.h" | 9 #include "chrome/browser/extensions/api/push_messaging/push_messaging_invalidati
on_handler.h" |
| 10 #include "chrome/browser/extensions/api/push_messaging/push_messaging_invalidati
on_mapper.h" | 10 #include "chrome/browser/extensions/api/push_messaging/push_messaging_invalidati
on_mapper.h" |
| 11 #include "chrome/browser/extensions/extension_apitest.h" | 11 #include "chrome/browser/extensions/extension_apitest.h" |
| 12 #include "chrome/browser/extensions/extension_test_message_listener.h" | 12 #include "chrome/browser/extensions/extension_test_message_listener.h" |
| 13 #include "chrome/browser/invalidation/fake_invalidation_service.h" | 13 #include "chrome/browser/invalidation/fake_invalidation_service.h" |
| 14 #include "chrome/browser/invalidation/invalidation_service_factory.h" | 14 #include "chrome/browser/invalidation/profile_invalidation_provider_factory.h" |
| 15 #include "chrome/browser/profiles/profile.h" | 15 #include "chrome/browser/profiles/profile.h" |
| 16 #include "chrome/browser/ui/browser.h" | 16 #include "chrome/browser/ui/browser.h" |
| 17 #include "chrome/common/chrome_switches.h" | 17 #include "chrome/common/chrome_switches.h" |
| 18 #include "chrome/test/base/ui_test_utils.h" | 18 #include "chrome/test/base/ui_test_utils.h" |
| 19 #include "components/invalidation/fake_invalidator.h" | 19 #include "components/invalidation/fake_invalidator.h" |
| 20 #include "components/invalidation/invalidation_service.h" | 20 #include "components/invalidation/invalidation_service.h" |
| 21 #include "components/invalidation/profile_invalidation_provider.h" |
| 22 #include "components/keyed_service/core/keyed_service.h" |
| 21 #include "google/cacheinvalidation/types.pb.h" | 23 #include "google/cacheinvalidation/types.pb.h" |
| 22 #include "sync/internal_api/public/base/invalidation.h" | 24 #include "sync/internal_api/public/base/invalidation.h" |
| 23 #include "testing/gmock/include/gmock/gmock.h" | 25 #include "testing/gmock/include/gmock/gmock.h" |
| 24 | 26 |
| 25 using ::testing::SaveArg; | 27 using ::testing::SaveArg; |
| 26 using ::testing::StrictMock; | 28 using ::testing::StrictMock; |
| 27 using ::testing::_; | 29 using ::testing::_; |
| 28 | 30 |
| 29 using invalidation::InvalidationServiceFactory; | 31 namespace content { |
| 32 class BrowserContext; |
| 33 } |
| 30 | 34 |
| 31 namespace extensions { | 35 namespace extensions { |
| 32 | 36 |
| 33 namespace { | 37 namespace { |
| 34 | 38 |
| 35 invalidation::ObjectId ExtensionAndSubchannelToObjectId( | 39 invalidation::ObjectId ExtensionAndSubchannelToObjectId( |
| 36 const std::string& extension_id, int subchannel_id) { | 40 const std::string& extension_id, int subchannel_id) { |
| 37 return invalidation::ObjectId( | 41 return invalidation::ObjectId( |
| 38 ipc::invalidation::ObjectSource::CHROME_PUSH_MESSAGING, | 42 ipc::invalidation::ObjectSource::CHROME_PUSH_MESSAGING, |
| 39 base::StringPrintf("U/%s/%d", extension_id.c_str(), subchannel_id)); | 43 base::StringPrintf("U/%s/%d", extension_id.c_str(), subchannel_id)); |
| 40 } | 44 } |
| 41 | 45 |
| 46 KeyedService* BuildFakeProfileInvalidationProvider( |
| 47 content::BrowserContext* context) { |
| 48 return new invalidation::ProfileInvalidationProvider( |
| 49 scoped_ptr<invalidation::InvalidationService>( |
| 50 new invalidation::FakeInvalidationService)); |
| 51 } |
| 52 |
| 42 class MockInvalidationMapper : public PushMessagingInvalidationMapper { | 53 class MockInvalidationMapper : public PushMessagingInvalidationMapper { |
| 43 public: | 54 public: |
| 44 MockInvalidationMapper(); | 55 MockInvalidationMapper(); |
| 45 ~MockInvalidationMapper(); | 56 ~MockInvalidationMapper(); |
| 46 | 57 |
| 47 MOCK_METHOD1(SuppressInitialInvalidationsForExtension, | 58 MOCK_METHOD1(SuppressInitialInvalidationsForExtension, |
| 48 void(const std::string&)); | 59 void(const std::string&)); |
| 49 MOCK_METHOD1(RegisterExtension, void(const std::string&)); | 60 MOCK_METHOD1(RegisterExtension, void(const std::string&)); |
| 50 MOCK_METHOD1(UnregisterExtension, void(const std::string&)); | 61 MOCK_METHOD1(UnregisterExtension, void(const std::string&)); |
| 51 }; | 62 }; |
| 52 | 63 |
| 53 MockInvalidationMapper::MockInvalidationMapper() {} | 64 MockInvalidationMapper::MockInvalidationMapper() {} |
| 54 MockInvalidationMapper::~MockInvalidationMapper() {} | 65 MockInvalidationMapper::~MockInvalidationMapper() {} |
| 55 | 66 |
| 56 } // namespace | 67 } // namespace |
| 57 | 68 |
| 58 class PushMessagingApiTest : public ExtensionApiTest { | 69 class PushMessagingApiTest : public ExtensionApiTest { |
| 59 public: | 70 public: |
| 60 PushMessagingApiTest() | 71 PushMessagingApiTest() |
| 61 : fake_invalidation_service_(NULL) { | 72 : fake_invalidation_service_(NULL) { |
| 62 } | 73 } |
| 63 | 74 |
| 64 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 75 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
| 65 ExtensionApiTest::SetUpCommandLine(command_line); | 76 ExtensionApiTest::SetUpCommandLine(command_line); |
| 66 } | 77 } |
| 67 | 78 |
| 68 virtual void SetUp() OVERRIDE { | 79 virtual void SetUp() OVERRIDE { |
| 69 InvalidationServiceFactory::GetInstance()->RegisterTestingFactory( | 80 invalidation::ProfileInvalidationProviderFactory::GetInstance()-> |
| 70 invalidation::FakeInvalidationService::Build); | 81 RegisterTestingFactory(BuildFakeProfileInvalidationProvider); |
| 71 ExtensionApiTest::SetUp(); | 82 ExtensionApiTest::SetUp(); |
| 72 } | 83 } |
| 73 | 84 |
| 74 virtual void SetUpOnMainThread() OVERRIDE { | 85 virtual void SetUpOnMainThread() OVERRIDE { |
| 75 ExtensionApiTest::SetUpOnMainThread(); | 86 ExtensionApiTest::SetUpOnMainThread(); |
| 76 fake_invalidation_service_ = | 87 fake_invalidation_service_ = |
| 77 static_cast<invalidation::FakeInvalidationService*>( | 88 static_cast<invalidation::FakeInvalidationService*>( |
| 78 InvalidationServiceFactory::GetInstance()->GetForProfile( | 89 static_cast<invalidation::ProfileInvalidationProvider*>( |
| 79 profile())); | 90 invalidation::ProfileInvalidationProviderFactory:: |
| 91 GetInstance()->GetForProfile(profile()))-> |
| 92 GetInvalidationService()); |
| 80 } | 93 } |
| 81 | 94 |
| 82 void EmitInvalidation( | 95 void EmitInvalidation( |
| 83 const invalidation::ObjectId& object_id, | 96 const invalidation::ObjectId& object_id, |
| 84 int64 version, | 97 int64 version, |
| 85 const std::string& payload) { | 98 const std::string& payload) { |
| 86 fake_invalidation_service_->EmitInvalidationForTest( | 99 fake_invalidation_service_->EmitInvalidationForTest( |
| 87 syncer::Invalidation::Init(object_id, version, payload)); | 100 syncer::Invalidation::Init(object_id, version, payload)); |
| 88 } | 101 } |
| 89 | 102 |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 const extensions::Extension* extension = | 201 const extensions::Extension* extension = |
| 189 LoadExtension(test_data_dir_.AppendASCII("push_messaging")); | 202 LoadExtension(test_data_dir_.AppendASCII("push_messaging")); |
| 190 ASSERT_TRUE(extension); | 203 ASSERT_TRUE(extension); |
| 191 ui_test_utils::NavigateToURL( | 204 ui_test_utils::NavigateToURL( |
| 192 browser(), extension->GetResourceURL("get_channel_id.html")); | 205 browser(), extension->GetResourceURL("get_channel_id.html")); |
| 193 | 206 |
| 194 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 207 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
| 195 } | 208 } |
| 196 | 209 |
| 197 } // namespace extensions | 210 } // namespace extensions |
| OLD | NEW |