Home | History | Annotate | Download | only in sync_notifier
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/notifications/sync_notifier/sync_notifier_test_utils.h"
      6 
      7 // Test data for App Info structures.
      8 const char kSendingService1Name[] = "TestService1";
      9 const char kSendingService2Name[] = "TestService2";
     10 const char kSendingService3Name[] = "TestService3";
     11 const char kTestInfoUrl[] = "https://www.google.com/info.html";
     12 const char kTestIconUrl[] = "https://www.google.com/someicon.png";
     13 
     14 // Fake data for creating a SyncData object to use in creating a
     15 // SyncedNotification.
     16 const char kAppId1[] = "fboilmbenheemaomgaeehigklolhkhnf";
     17 const char kAppId2[] = "fbcmoldooppoahjhfflnmljoanccekpf";
     18 const char kAppId3[] = "fbcmoldooppoahjhfflnmljoanccek33";
     19 const char kAppId4[] = "fbcmoldooppoahjhfflnmljoanccek44";
     20 const char kAppId5[] = "fbcmoldooppoahjhfflnmljoanccek55";
     21 const char kAppId6[] = "fbcmoldooppoahjhfflnmljoanccek66";
     22 const char kAppId7[] = "fbcmoldooppoahjhfflnmljoanccek77";
     23 const char kKey1[] = "foo";
     24 const char kKey2[] = "bar";
     25 const char kKey3[] = "bat";
     26 const char kKey4[] = "baz";
     27 const char kKey5[] = "foobar";
     28 const char kKey6[] = "fu";
     29 const char kKey7[] = "meta";
     30 const char kIconUrl1[] = "http://www.google.com/icon1.jpg";
     31 const char kIconUrl2[] = "http://www.google.com/icon2.jpg";
     32 const char kIconUrl3[] = "http://www.google.com/icon3.jpg";
     33 const char kIconUrl4[] = "http://www.google.com/icon4.jpg";
     34 const char kIconUrl5[] = "http://www.google.com/icon5.jpg";
     35 const char kIconUrl6[] = "http://www.google.com/icon6.jpg";
     36 const char kIconUrl7[] = "http://www.google.com/icon7.jpg";
     37 const char kTitle1[] = "New appointment at 2:15";
     38 const char kTitle2[] = "Email from Mark: Upcoming Ski trip";
     39 const char kTitle3[] = "Weather alert - light rain tonight.";
     40 const char kTitle4[] = "Zombie Alert on I-405";
     41 const char kTitle5[] = "5-dimensional plutonian steam hockey scores";
     42 const char kTitle6[] = "Conterfactuals Inc Stock report";
     43 const char kTitle7[] = "Push Messaging app updated";
     44 const char kText1[] = "Space Needle, 12:00 pm";
     45 const char kText2[] = "Stevens Pass is our first choice.";
     46 const char kText3[] = "More rain expected in the Seattle area tonight.";
     47 const char kText4[] = "Traffic slowdown as motorists are hitting zombies";
     48 const char kText5[] = "Neptune wins, pi to e";
     49 const char kText6[] = "Beef flavored base for soups";
     50 const char kText7[] = "You now have the latest version of Push Messaging App.";
     51 const char kText1And1[] = "Space Needle, 12:00 pm\nSpace Needle, 12:00 pm";
     52 const char kImageUrl1[] = "http://www.google.com/image1.jpg";
     53 const char kImageUrl2[] = "http://www.google.com/image2.jpg";
     54 const char kImageUrl3[] = "http://www.google.com/image3.jpg";
     55 const char kImageUrl4[] = "http://www.google.com/image4.jpg";
     56 const char kImageUrl5[] = "http://www.google.com/image5.jpg";
     57 const char kImageUrl6[] = "http://www.google.com/image6.jpg";
     58 const char kImageUrl7[] = "http://www.google.com/image7.jpg";
     59 const char kExpectedOriginUrl[] =
     60     "synced-notification://fboilmbenheemaomgaeehigklolhkhnf";
     61 const char kDefaultDestinationTitle[] = "Open web page";
     62 const char kDefaultDestinationIconUrl[] = "http://www.google.com/image4.jpg";
     63 const char kDefaultDestinationUrl[] = "chrome://flags";
     64 const char kButtonOneTitle[] = "Read";
     65 const char kButtonOneIconUrl[] = "http://www.google.com/image8.jpg";
     66 const char kButtonOneUrl[] = "chrome://sync";
     67 const char kButtonTwoTitle[] = "Reply";
     68 const char kButtonTwoIconUrl[] = "http://www.google.com/image9.jpg";
     69 const char kButtonTwoUrl[] = "chrome://about";
     70 const char kContainedTitle1[] = "Today's Picnic moved";
     71 const char kContainedTitle2[] = "Group Run Today";
     72 const char kContainedTitle3[] = "Starcraft Tonight";
     73 const char kContainedMessage1[] = "Due to rain, we will be inside the cafe.";
     74 const char kContainedMessage2[] = "Meet at noon in the Gym.";
     75 const char kContainedMessage3[] = "Let's play starcraft tonight on the LAN.";
     76 
     77 syncer::SyncData CreateSyncData(
     78     const std::string& title,
     79     const std::string& text,
     80     const std::string& app_icon_url,
     81     const std::string& image_url,
     82     const std::string& app_id,
     83     const std::string& key,
     84     const sync_pb::CoalescedSyncedNotification_ReadState read_state) {
     85   // CreateLocalData makes a copy of this, so this can safely live
     86   // on the stack.
     87   sync_pb::EntitySpecifics entity_specifics;
     88 
     89   // Get a writeable pointer to the sync notifications specifics inside the
     90   // entity specifics.
     91   sync_pb::SyncedNotificationSpecifics* specifics =
     92       entity_specifics.mutable_synced_notification();
     93 
     94   // Get pointers to sub structures.
     95   sync_pb::CoalescedSyncedNotification* coalesced_notification =
     96       specifics->mutable_coalesced_notification();
     97   sync_pb::SyncedNotificationRenderInfo* render_info =
     98       coalesced_notification->mutable_render_info();
     99   sync_pb::ExpandedInfo* expanded_info =
    100       render_info->mutable_expanded_info();
    101   sync_pb::SimpleExpandedLayout* simple_expanded_layout =
    102       expanded_info->mutable_simple_expanded_layout();
    103   sync_pb::CollapsedInfo* collapsed_info =
    104       render_info->mutable_collapsed_info();
    105   sync_pb::SimpleCollapsedLayout* simple_collapsed_layout =
    106       collapsed_info->mutable_simple_collapsed_layout();
    107   sync_pb::SyncedNotificationDestination* default_destination =
    108       collapsed_info->mutable_default_destination();
    109 
    110   coalesced_notification->set_app_id(app_id);
    111 
    112   coalesced_notification->set_key(key);
    113 
    114   coalesced_notification->
    115       set_priority(static_cast<sync_pb::CoalescedSyncedNotification_Priority>(
    116           kProtobufPriority));
    117 
    118   // Set the title.
    119   simple_expanded_layout->set_title(title);
    120   simple_collapsed_layout->set_heading(title);
    121 
    122   // Set the text.
    123   simple_expanded_layout->set_text(text);
    124   simple_collapsed_layout->set_description(text);
    125   simple_collapsed_layout->set_annotation(text);
    126 
    127   // Set the heading.
    128   simple_collapsed_layout->set_heading(title);
    129 
    130   // Add the collapsed info and set the app_icon_url on it.
    131   simple_collapsed_layout->
    132       mutable_app_icon()->
    133       set_url(app_icon_url);
    134 
    135   // Add the media object and set the image url on it.
    136   simple_collapsed_layout->add_media();
    137   simple_collapsed_layout->
    138       mutable_media(0)->
    139       mutable_image()->
    140       set_url(image_url);
    141 
    142   coalesced_notification->set_creation_time_msec(kFakeCreationTime);
    143 
    144   coalesced_notification->set_read_state(read_state);
    145 
    146   // Contained notification one.
    147   expanded_info->add_collapsed_info();
    148   sync_pb::SimpleCollapsedLayout* notification_layout1 =
    149       expanded_info->
    150       mutable_collapsed_info(0)->
    151       mutable_simple_collapsed_layout();
    152   notification_layout1->set_heading(kContainedTitle1);
    153   notification_layout1->set_description(kContainedMessage1);
    154 
    155   // Contained notification two.
    156   expanded_info->add_collapsed_info();
    157   sync_pb::SimpleCollapsedLayout* notification_layout2 =
    158       expanded_info->
    159       mutable_collapsed_info(1)->
    160       mutable_simple_collapsed_layout();
    161   notification_layout2->set_heading(kContainedTitle2);
    162   notification_layout2->set_description(kContainedMessage2);
    163 
    164   // Contained notification three.
    165   expanded_info->add_collapsed_info();
    166   sync_pb::SimpleCollapsedLayout* notification_layout3 =
    167       expanded_info->
    168       mutable_collapsed_info(2)->
    169       mutable_simple_collapsed_layout();
    170   notification_layout3->set_heading(kContainedTitle3);
    171   notification_layout3->set_description(kContainedMessage3);
    172 
    173   // Default Destination.
    174   default_destination->set_text(kDefaultDestinationTitle);
    175   default_destination->mutable_icon()->set_url(kDefaultDestinationIconUrl);
    176   default_destination->mutable_icon()->set_alt_text(kDefaultDestinationTitle);
    177   default_destination->set_url(kDefaultDestinationUrl);
    178 
    179   // Buttons are represented as targets.
    180 
    181   // Button One.
    182   collapsed_info->add_target();
    183   sync_pb::SyncedNotificationAction* action1 =
    184       collapsed_info->mutable_target(0)->mutable_action();
    185   action1->set_text(kButtonOneTitle);
    186   action1->mutable_icon()->set_url(kButtonOneIconUrl);
    187   action1->mutable_icon()->set_alt_text(kButtonOneTitle);
    188   action1->set_url(kButtonOneUrl);
    189 
    190   // Button Two.
    191   collapsed_info->add_target();
    192   sync_pb::SyncedNotificationAction* action2 =
    193       collapsed_info->mutable_target(1)->mutable_action();
    194   action2->set_text(kButtonOneTitle);
    195   action2->mutable_icon()->set_url(kButtonTwoIconUrl);
    196   action2->mutable_icon()->set_alt_text(kButtonTwoTitle);
    197   action2->set_url(kButtonTwoUrl);
    198 
    199   syncer::SyncData sync_data = syncer::SyncData::CreateLocalData(
    200       "syncer::SYNCED_NOTIFICATIONS",
    201       "ChromeNotifierServiceUnitTest",
    202       entity_specifics);
    203 
    204   return sync_data;
    205 }
    206 
    207 namespace notifier {
    208 
    209 StubSyncedNotificationAppInfoService::StubSyncedNotificationAppInfoService(
    210     Profile* profile) : SyncedNotificationAppInfoService(profile) {
    211   on_bitmap_fetches_done_called_ = false;
    212 }
    213 
    214 StubSyncedNotificationAppInfoService::~StubSyncedNotificationAppInfoService() {
    215 }
    216 
    217 syncer::SyncMergeResult
    218 StubSyncedNotificationAppInfoService::MergeDataAndStartSyncing(
    219       syncer::ModelType type,
    220       const syncer::SyncDataList& initial_sync_data,
    221       scoped_ptr<syncer::SyncChangeProcessor> sync_processor,
    222       scoped_ptr<syncer::SyncErrorFactory> error_handler) {
    223     return syncer::SyncMergeResult(syncer::SYNCED_NOTIFICATION_APP_INFO);
    224 }
    225 
    226 syncer::SyncError StubSyncedNotificationAppInfoService::ProcessSyncChanges(
    227       const tracked_objects::Location& from_here,
    228       const syncer::SyncChangeList& change_list) {
    229     return syncer::SyncError();
    230 }
    231 
    232 syncer::SyncDataList StubSyncedNotificationAppInfoService::GetAllSyncData(
    233     syncer::ModelType type) const {
    234     return syncer::SyncDataList();
    235 }
    236 
    237 void StubSyncedNotificationAppInfoService::OnBitmapFetchesDone(
    238     std::vector<std::string> added_app_ids,
    239     std::vector<std::string> removed_app_ids) {
    240     added_app_ids_ = added_app_ids;
    241     removed_app_ids_ = removed_app_ids;
    242     on_bitmap_fetches_done_called_ = true;
    243 }
    244 
    245 scoped_ptr<SyncedNotificationAppInfo>
    246 StubSyncedNotificationAppInfoService::
    247     CreateSyncedNotificationAppInfoFromProtobuf(
    248         const sync_pb::SyncedNotificationAppInfo& app_info) {
    249   return scoped_ptr<SyncedNotificationAppInfo>();
    250 }
    251 
    252 SyncedNotificationAppInfo*
    253 StubSyncedNotificationAppInfoService::FindSyncedNotificationAppInfoByName(
    254     const std::string& name) {
    255   return NULL;
    256 }
    257 
    258 SyncedNotificationAppInfo*
    259 StubSyncedNotificationAppInfoService::FindSyncedNotificationAppInfoByAppId(
    260     const std::string& app_id) {
    261   return NULL;
    262 }
    263 
    264 std::string
    265 StubSyncedNotificationAppInfoService::FindSendingServiceNameFromAppId(
    266     const std::string app_id) {
    267   return std::string();
    268 }
    269 std::vector<SyncedNotificationSendingServiceSettingsData>
    270 StubSyncedNotificationAppInfoService::GetAllSendingServiceSettingsData() {
    271   std::vector<SyncedNotificationSendingServiceSettingsData> empty;
    272   return empty;
    273 }
    274 
    275 
    276 // Probe functions to return data.
    277 std::vector<std::string> StubSyncedNotificationAppInfoService::added_app_ids() {
    278   return added_app_ids_;
    279 }
    280 
    281 std::vector<std::string>
    282 StubSyncedNotificationAppInfoService::removed_app_ids() {
    283     return removed_app_ids_;
    284 }
    285 bool StubSyncedNotificationAppInfoService::on_bitmap_fetches_done_called() {
    286   return on_bitmap_fetches_done_called_;
    287 }
    288 
    289 }  // namespace notifier
    290