Chromium Code Reviews| Index: chrome/browser/sync/test/integration/app_notification_helper.cc |
| =================================================================== |
| --- chrome/browser/sync/test/integration/app_notification_helper.cc (revision 0) |
| +++ chrome/browser/sync/test/integration/app_notification_helper.cc (revision 0) |
| @@ -0,0 +1,94 @@ |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/sync/test/integration/app_notification_helper.h" |
| + |
| +#include <vector> |
| + |
| +#include "base/string_util.h" |
| +#include "base/stringprintf.h" |
| +#include "base/time.h" |
| +#include "base/utf_string_conversions.h" |
| +#include "chrome/browser/extensions/app_notification_manager.h" |
| +#include "chrome/browser/extensions/extension_service.h" |
| +#include "chrome/browser/profiles/profile.h" |
| +#include "chrome/browser/sync/profile_sync_service_harness.h" |
| +#include "chrome/browser/sync/test/integration/sync_datatype_helper.h" |
| +#include "chrome/browser/sync/test/integration/sync_test.h" |
| + |
| +using sync_datatype_helper::test; |
| + |
| +namespace app_notification_helper { |
| + |
| +AppNotificationManager* GetServiceForProfile(int index) { |
| + return test()->GetProfile(index)-> |
| + GetExtensionService()->app_notification_manager(); |
| +} |
| + |
| +AppNotificationManager* GetVerifierService() { |
| + return test()->verifier()->GetExtensionService()->app_notification_manager(); |
| +} |
| + |
| +bool AppNotificationMatch(const AppNotification* not1, |
| + const AppNotification* not2) { |
| + CHECK(not1); |
| + CHECK(not2); |
| + |
| + // Compare all major fields. |
| + bool result = (not1->title() == not2->title() && |
| + not1->body() == not2->body()); |
| + // Print some useful debug info. |
| + if (!result) { |
| + LOG(ERROR) << "AppNotification did not match"; |
| + } |
| + return result; |
| +} |
| + |
| +bool ServiceMatchesVerifier(int profile, const std::string& extension_id) { |
| + AppNotificationManager* verifier = GetVerifierService(); |
| + AppNotificationManager* other = GetServiceForProfile(profile); |
| + |
| + CHECK(verifier); |
| + CHECK(other); |
| + |
| + const AppNotificationList* verifier_list = verifier->GetAll(extension_id); |
| + const AppNotificationList* other_list = other->GetAll(extension_id); |
| + if (verifier_list == NULL && other_list == NULL) { |
| + return true; |
| + } |
| + |
| + if (verifier_list->size() != other_list->size()) { |
|
Munjal (Google)
2011/12/03 05:03:49
You are checking verifier_list == NULL && other_li
|
| + LOG(ERROR) << "Verifier and other service have a different " |
| + << "count of notifications: " |
| + << verifier_list->size() << " vs " |
| + << other_list->size() << " respectively."; |
| + return false; |
| + } |
| + |
| + for (size_t i = 0; i < verifier_list->size(); ++i) { |
| + const AppNotification* verifier_notification = verifier_list->at(i).get(); |
|
Munjal (Google)
2011/12/03 05:03:49
Nit: you can do verifier_list[i].get()
|
| + const AppNotification* other_notification = other_list->at(i).get(); |
| + CHECK(verifier_notification); |
| + CHECK(other_notification); |
| + |
| + if (!AppNotificationMatch(verifier_notification, other_notification)) |
| + return false; |
| + } |
| + return true; |
| +} |
| + |
| +void AddNotification(int profile, int seed) { |
| + GetServiceForProfile(profile)->Add(CreateTestAppNotification(seed)); |
| + if (test()->use_verifier()) |
| + GetVerifierService()->Add(CreateTestAppNotification(seed)); |
| +} |
| + |
| +AppNotification* CreateTestAppNotification(int seed) { |
| + return new AppNotification(false, base::Time::Now(), |
| + "guid" + seed, "extensionId", |
| + "title" + seed, "body" +seed); |
| +} |
| + |
| +} // namespace app_notification_helper |
| + |
|
Munjal (Google)
2011/12/03 05:03:49
Nit: remove this empty line.
|