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.h" |
| 15 #include "chrome/browser/invalidation/profile_invalidation_provider_factory.h" |
15 #include "chrome/browser/profiles/profile.h" | 16 #include "chrome/browser/profiles/profile.h" |
16 #include "chrome/browser/ui/browser.h" | 17 #include "chrome/browser/ui/browser.h" |
17 #include "chrome/common/chrome_switches.h" | 18 #include "chrome/common/chrome_switches.h" |
18 #include "chrome/test/base/ui_test_utils.h" | 19 #include "chrome/test/base/ui_test_utils.h" |
19 #include "components/invalidation/fake_invalidator.h" | 20 #include "components/invalidation/fake_invalidator.h" |
20 #include "components/invalidation/invalidation_service.h" | 21 #include "components/invalidation/invalidation_service.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 |