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 // Fake data for creating a SyncData object to use in creating a 8 // SyncedNotification. 9 const char kAppId1[] = "fboilmbenheemaomgaeehigklolhkhnf"; 10 const char kAppId2[] = "fbcmoldooppoahjhfflnmljoanccekpf"; 11 const char kAppId3[] = "fbcmoldooppoahjhfflnmljoanccek33"; 12 const char kAppId4[] = "fbcmoldooppoahjhfflnmljoanccek44"; 13 const char kAppId5[] = "fbcmoldooppoahjhfflnmljoanccek55"; 14 const char kAppId6[] = "fbcmoldooppoahjhfflnmljoanccek66"; 15 const char kAppId7[] = "fbcmoldooppoahjhfflnmljoanccek77"; 16 const char kKey1[] = "foo"; 17 const char kKey2[] = "bar"; 18 const char kKey3[] = "bat"; 19 const char kKey4[] = "baz"; 20 const char kKey5[] = "foobar"; 21 const char kKey6[] = "fu"; 22 const char kKey7[] = "meta"; 23 const char kIconUrl1[] = "http://www.google.com/icon1.jpg"; 24 const char kIconUrl2[] = "http://www.google.com/icon2.jpg"; 25 const char kIconUrl3[] = "http://www.google.com/icon3.jpg"; 26 const char kIconUrl4[] = "http://www.google.com/icon4.jpg"; 27 const char kIconUrl5[] = "http://www.google.com/icon5.jpg"; 28 const char kIconUrl6[] = "http://www.google.com/icon6.jpg"; 29 const char kIconUrl7[] = "http://www.google.com/icon7.jpg"; 30 const char kTitle1[] = "New appointment at 2:15"; 31 const char kTitle2[] = "Email from Mark: Upcoming Ski trip"; 32 const char kTitle3[] = "Weather alert - light rain tonight."; 33 const char kTitle4[] = "Zombie Alert on I-405"; 34 const char kTitle5[] = "5-dimensional plutonian steam hockey scores"; 35 const char kTitle6[] = "Conterfactuals Inc Stock report"; 36 const char kTitle7[] = "Push Messaging app updated"; 37 const char kText1[] = "Space Needle, 12:00 pm"; 38 const char kText2[] = "Stevens Pass is our first choice."; 39 const char kText3[] = "More rain expected in the Seattle area tonight."; 40 const char kText4[] = "Traffic slowdown as motorists are hitting zombies"; 41 const char kText5[] = "Neptune wins, pi to e"; 42 const char kText6[] = "Beef flavored base for soups"; 43 const char kText7[] = "You now have the latest version of Push Messaging App."; 44 const char kText1And1[] = "Space Needle, 12:00 pm\nSpace Needle, 12:00 pm"; 45 const char kImageUrl1[] = "http://www.google.com/image1.jpg"; 46 const char kImageUrl2[] = "http://www.google.com/image2.jpg"; 47 const char kImageUrl3[] = "http://www.google.com/image3.jpg"; 48 const char kImageUrl4[] = "http://www.google.com/image4.jpg"; 49 const char kImageUrl5[] = "http://www.google.com/image5.jpg"; 50 const char kImageUrl6[] = "http://www.google.com/image6.jpg"; 51 const char kImageUrl7[] = "http://www.google.com/image7.jpg"; 52 const char kExpectedOriginUrl[] = 53 "synced-notification://fboilmbenheemaomgaeehigklolhkhnf"; 54 const char kDefaultDestinationTitle[] = "Open web page"; 55 const char kDefaultDestinationIconUrl[] = "http://www.google.com/image4.jpg"; 56 const char kDefaultDestinationUrl[] = "chrome://flags"; 57 const char kButtonOneTitle[] = "Read"; 58 const char kButtonOneIconUrl[] = "http://www.google.com/image8.jpg"; 59 const char kButtonOneUrl[] = "chrome://sync"; 60 const char kButtonTwoTitle[] = "Reply"; 61 const char kButtonTwoIconUrl[] = "http://www.google.com/image9.jpg"; 62 const char kButtonTwoUrl[] = "chrome://about"; 63 const char kContainedTitle1[] = "Today's Picnic moved"; 64 const char kContainedTitle2[] = "Group Run Today"; 65 const char kContainedTitle3[] = "Starcraft Tonight"; 66 const char kContainedMessage1[] = "Due to rain, we will be inside the cafe."; 67 const char kContainedMessage2[] = "Meet at noon in the Gym."; 68 const char kContainedMessage3[] = "Let's play starcraft tonight on the LAN."; 69 70 syncer::SyncData CreateSyncData( 71 const std::string& title, 72 const std::string& text, 73 const std::string& app_icon_url, 74 const std::string& image_url, 75 const std::string& app_id, 76 const std::string& key, 77 const sync_pb::CoalescedSyncedNotification_ReadState read_state) { 78 // CreateLocalData makes a copy of this, so this can safely live 79 // on the stack. 80 sync_pb::EntitySpecifics entity_specifics; 81 82 // Get a writeable pointer to the sync notifications specifics inside the 83 // entity specifics. 84 sync_pb::SyncedNotificationSpecifics* specifics = 85 entity_specifics.mutable_synced_notification(); 86 87 // Get pointers to sub structures. 88 sync_pb::CoalescedSyncedNotification* coalesced_notification = 89 specifics->mutable_coalesced_notification(); 90 sync_pb::SyncedNotificationRenderInfo* render_info = 91 coalesced_notification->mutable_render_info(); 92 sync_pb::ExpandedInfo* expanded_info = 93 render_info->mutable_expanded_info(); 94 sync_pb::SimpleExpandedLayout* simple_expanded_layout = 95 expanded_info->mutable_simple_expanded_layout(); 96 sync_pb::CollapsedInfo* collapsed_info = 97 render_info->mutable_collapsed_info(); 98 sync_pb::SimpleCollapsedLayout* simple_collapsed_layout = 99 collapsed_info->mutable_simple_collapsed_layout(); 100 sync_pb::SyncedNotificationDestination* default_destination = 101 collapsed_info->mutable_default_destination(); 102 103 coalesced_notification->set_app_id(app_id); 104 105 coalesced_notification->set_key(key); 106 107 coalesced_notification-> 108 set_priority(static_cast<sync_pb::CoalescedSyncedNotification_Priority>( 109 kProtobufPriority)); 110 111 // Set the title. 112 simple_expanded_layout->set_title(title); 113 simple_collapsed_layout->set_heading(title); 114 115 // Set the text. 116 simple_expanded_layout->set_text(text); 117 simple_collapsed_layout->set_description(text); 118 simple_collapsed_layout->set_annotation(text); 119 120 // Set the heading. 121 simple_collapsed_layout->set_heading(title); 122 123 // Add the collapsed info and set the app_icon_url on it. 124 simple_collapsed_layout-> 125 mutable_app_icon()-> 126 set_url(app_icon_url); 127 128 // Add the media object and set the image url on it. 129 simple_collapsed_layout->add_media(); 130 simple_collapsed_layout-> 131 mutable_media(0)-> 132 mutable_image()-> 133 set_url(image_url); 134 135 coalesced_notification->set_creation_time_msec(kFakeCreationTime); 136 137 coalesced_notification->set_read_state(read_state); 138 139 // Contained notification one. 140 expanded_info->add_collapsed_info(); 141 sync_pb::SimpleCollapsedLayout* notification_layout1 = 142 expanded_info-> 143 mutable_collapsed_info(0)-> 144 mutable_simple_collapsed_layout(); 145 notification_layout1->set_heading(kContainedTitle1); 146 notification_layout1->set_description(kContainedMessage1); 147 148 // Contained notification two. 149 expanded_info->add_collapsed_info(); 150 sync_pb::SimpleCollapsedLayout* notification_layout2 = 151 expanded_info-> 152 mutable_collapsed_info(1)-> 153 mutable_simple_collapsed_layout(); 154 notification_layout2->set_heading(kContainedTitle2); 155 notification_layout2->set_description(kContainedMessage2); 156 157 // Contained notification three. 158 expanded_info->add_collapsed_info(); 159 sync_pb::SimpleCollapsedLayout* notification_layout3 = 160 expanded_info-> 161 mutable_collapsed_info(2)-> 162 mutable_simple_collapsed_layout(); 163 notification_layout3->set_heading(kContainedTitle3); 164 notification_layout3->set_description(kContainedMessage3); 165 166 // Default Destination. 167 default_destination->set_text(kDefaultDestinationTitle); 168 default_destination->mutable_icon()->set_url(kDefaultDestinationIconUrl); 169 default_destination->mutable_icon()->set_alt_text(kDefaultDestinationTitle); 170 default_destination->set_url(kDefaultDestinationUrl); 171 172 // Buttons are represented as targets. 173 174 // Button One. 175 collapsed_info->add_target(); 176 sync_pb::SyncedNotificationAction* action1 = 177 collapsed_info->mutable_target(0)->mutable_action(); 178 action1->set_text(kButtonOneTitle); 179 action1->mutable_icon()->set_url(kButtonOneIconUrl); 180 action1->mutable_icon()->set_alt_text(kButtonOneTitle); 181 action1->set_url(kButtonOneUrl); 182 183 // Button Two. 184 collapsed_info->add_target(); 185 sync_pb::SyncedNotificationAction* action2 = 186 collapsed_info->mutable_target(1)->mutable_action(); 187 action2->set_text(kButtonOneTitle); 188 action2->mutable_icon()->set_url(kButtonTwoIconUrl); 189 action2->mutable_icon()->set_alt_text(kButtonTwoTitle); 190 action2->set_url(kButtonTwoUrl); 191 192 syncer::SyncData sync_data = syncer::SyncData::CreateLocalData( 193 "syncer::SYNCED_NOTIFICATIONS", 194 "ChromeNotifierServiceUnitTest", 195 entity_specifics); 196 197 return sync_data; 198 } 199