| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/sync/glue/extension_util.h" | 5 #include "chrome/browser/sync/glue/extension_util.h" |
| 6 | 6 |
| 7 #include "base/file_path.h" | 7 #include "base/file_path.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "chrome/browser/extensions/extension_sync_data.h" | 9 #include "chrome/browser/extensions/extension_sync_data.h" |
| 10 #include "chrome/browser/sync/protocol/extension_specifics.pb.h" | 10 #include "chrome/browser/sync/protocol/extension_specifics.pb.h" |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 } | 146 } |
| 147 { | 147 { |
| 148 FilePath file_path(kExtensionFilePath); | 148 FilePath file_path(kExtensionFilePath); |
| 149 scoped_refptr<Extension> extension( | 149 scoped_refptr<Extension> extension( |
| 150 MakeExtension(false, GURL(), GURL(), true, | 150 MakeExtension(false, GURL(), GURL(), true, |
| 151 Extension::INTERNAL, 2, file_path)); | 151 Extension::INTERNAL, 2, file_path)); |
| 152 EXPECT_FALSE(extension && IsExtensionValid(*extension)); | 152 EXPECT_FALSE(extension && IsExtensionValid(*extension)); |
| 153 } | 153 } |
| 154 } | 154 } |
| 155 | 155 |
| 156 TEST_F(ExtensionUtilTest, IsExtensionSpecificsUnset) { | |
| 157 { | |
| 158 sync_pb::ExtensionSpecifics specifics; | |
| 159 EXPECT_TRUE(IsExtensionSpecificsUnset(specifics)); | |
| 160 } | |
| 161 | |
| 162 { | |
| 163 sync_pb::ExtensionSpecifics specifics; | |
| 164 specifics.set_id("a"); | |
| 165 EXPECT_FALSE(IsExtensionSpecificsUnset(specifics)); | |
| 166 } | |
| 167 | |
| 168 { | |
| 169 sync_pb::ExtensionSpecifics specifics; | |
| 170 specifics.set_version("a"); | |
| 171 EXPECT_FALSE(IsExtensionSpecificsUnset(specifics)); | |
| 172 } | |
| 173 | |
| 174 { | |
| 175 sync_pb::ExtensionSpecifics specifics; | |
| 176 specifics.set_update_url("a"); | |
| 177 EXPECT_FALSE(IsExtensionSpecificsUnset(specifics)); | |
| 178 } | |
| 179 | |
| 180 { | |
| 181 sync_pb::ExtensionSpecifics specifics; | |
| 182 specifics.set_enabled(true); | |
| 183 EXPECT_FALSE(IsExtensionSpecificsUnset(specifics)); | |
| 184 } | |
| 185 | |
| 186 { | |
| 187 sync_pb::ExtensionSpecifics specifics; | |
| 188 specifics.set_incognito_enabled(true); | |
| 189 EXPECT_FALSE(IsExtensionSpecificsUnset(specifics)); | |
| 190 } | |
| 191 | |
| 192 { | |
| 193 sync_pb::ExtensionSpecifics specifics; | |
| 194 specifics.set_name("a"); | |
| 195 EXPECT_FALSE(IsExtensionSpecificsUnset(specifics)); | |
| 196 } | |
| 197 } | |
| 198 | |
| 199 TEST_F(ExtensionUtilTest, IsExtensionSpecificsValid) { | |
| 200 sync_pb::ExtensionSpecifics specifics; | |
| 201 EXPECT_FALSE(IsExtensionSpecificsValid(specifics)); | |
| 202 specifics.set_id(kValidId); | |
| 203 EXPECT_FALSE(IsExtensionSpecificsValid(specifics)); | |
| 204 specifics.set_version(kValidVersion); | |
| 205 EXPECT_TRUE(IsExtensionSpecificsValid(specifics)); | |
| 206 EXPECT_FALSE(IsExtensionSpecificsUnset(specifics)); | |
| 207 specifics.set_update_url(kValidUpdateUrl1); | |
| 208 EXPECT_TRUE(IsExtensionSpecificsValid(specifics)); | |
| 209 EXPECT_FALSE(IsExtensionSpecificsUnset(specifics)); | |
| 210 | |
| 211 { | |
| 212 sync_pb::ExtensionSpecifics specifics_copy(specifics); | |
| 213 specifics_copy.set_id("invalid"); | |
| 214 EXPECT_FALSE(IsExtensionSpecificsValid(specifics_copy)); | |
| 215 } | |
| 216 | |
| 217 { | |
| 218 sync_pb::ExtensionSpecifics specifics_copy(specifics); | |
| 219 specifics_copy.set_version("invalid"); | |
| 220 EXPECT_FALSE(IsExtensionSpecificsValid(specifics_copy)); | |
| 221 } | |
| 222 | |
| 223 { | |
| 224 sync_pb::ExtensionSpecifics specifics_copy(specifics); | |
| 225 specifics_copy.set_update_url("http:invalid.com:invalid"); | |
| 226 EXPECT_FALSE(IsExtensionSpecificsValid(specifics_copy)); | |
| 227 } | |
| 228 } | |
| 229 | |
| 230 TEST_F(ExtensionUtilTest, AreExtensionSpecificsEqual) { | |
| 231 sync_pb::ExtensionSpecifics a, b; | |
| 232 EXPECT_TRUE(AreExtensionSpecificsEqual(a, b)); | |
| 233 | |
| 234 a.set_id("a"); | |
| 235 EXPECT_FALSE(AreExtensionSpecificsEqual(a, b)); | |
| 236 b.set_id("a"); | |
| 237 EXPECT_TRUE(AreExtensionSpecificsEqual(a, b)); | |
| 238 | |
| 239 a.set_version("1.5"); | |
| 240 EXPECT_FALSE(AreExtensionSpecificsEqual(a, b)); | |
| 241 b.set_version("1.5"); | |
| 242 EXPECT_TRUE(AreExtensionSpecificsEqual(a, b)); | |
| 243 | |
| 244 a.set_update_url("http://www.foo.com"); | |
| 245 EXPECT_FALSE(AreExtensionSpecificsEqual(a, b)); | |
| 246 b.set_update_url("http://www.foo.com"); | |
| 247 EXPECT_TRUE(AreExtensionSpecificsEqual(a, b)); | |
| 248 | |
| 249 a.set_enabled(true); | |
| 250 EXPECT_FALSE(AreExtensionSpecificsEqual(a, b)); | |
| 251 b.set_enabled(true); | |
| 252 EXPECT_TRUE(AreExtensionSpecificsEqual(a, b)); | |
| 253 | |
| 254 a.set_incognito_enabled(true); | |
| 255 EXPECT_FALSE(AreExtensionSpecificsEqual(a, b)); | |
| 256 b.set_incognito_enabled(true); | |
| 257 EXPECT_TRUE(AreExtensionSpecificsEqual(a, b)); | |
| 258 | |
| 259 a.set_name("name"); | |
| 260 EXPECT_FALSE(AreExtensionSpecificsEqual(a, b)); | |
| 261 b.set_name("name"); | |
| 262 EXPECT_TRUE(AreExtensionSpecificsEqual(a, b)); | |
| 263 } | |
| 264 | |
| 265 TEST_F(ExtensionUtilTest, CopyUserProperties) { | |
| 266 sync_pb::ExtensionSpecifics dest_specifics; | |
| 267 dest_specifics.set_version(kVersion2); | |
| 268 dest_specifics.set_update_url(kValidUpdateUrl1); | |
| 269 dest_specifics.set_enabled(true); | |
| 270 dest_specifics.set_incognito_enabled(false); | |
| 271 dest_specifics.set_name(kName); | |
| 272 | |
| 273 sync_pb::ExtensionSpecifics specifics; | |
| 274 specifics.set_id(kValidId); | |
| 275 specifics.set_version(kVersion3); | |
| 276 specifics.set_update_url(kValidUpdateUrl2); | |
| 277 specifics.set_enabled(false); | |
| 278 specifics.set_incognito_enabled(true); | |
| 279 specifics.set_name(kName2); | |
| 280 | |
| 281 CopyUserProperties(specifics, &dest_specifics); | |
| 282 EXPECT_EQ("", dest_specifics.id()); | |
| 283 EXPECT_EQ(kVersion2, dest_specifics.version()); | |
| 284 EXPECT_EQ(kValidUpdateUrl1, dest_specifics.update_url()); | |
| 285 EXPECT_FALSE(dest_specifics.enabled()); | |
| 286 EXPECT_TRUE(dest_specifics.incognito_enabled()); | |
| 287 EXPECT_EQ(kName, dest_specifics.name()); | |
| 288 } | |
| 289 | |
| 290 TEST_F(ExtensionUtilTest, CopyNonUserProperties) { | |
| 291 sync_pb::ExtensionSpecifics dest_specifics; | |
| 292 dest_specifics.set_id(kValidId); | |
| 293 dest_specifics.set_version(kVersion2); | |
| 294 dest_specifics.set_update_url(kValidUpdateUrl1); | |
| 295 dest_specifics.set_enabled(true); | |
| 296 dest_specifics.set_incognito_enabled(false); | |
| 297 dest_specifics.set_name(kName); | |
| 298 | |
| 299 sync_pb::ExtensionSpecifics specifics; | |
| 300 specifics.set_id(""); | |
| 301 specifics.set_version(kVersion3); | |
| 302 specifics.set_update_url(kValidUpdateUrl2); | |
| 303 specifics.set_enabled(false); | |
| 304 specifics.set_incognito_enabled(true); | |
| 305 specifics.set_name(kName2); | |
| 306 | |
| 307 CopyNonUserProperties(specifics, &dest_specifics); | |
| 308 EXPECT_EQ("", dest_specifics.id()); | |
| 309 EXPECT_EQ(kVersion3, dest_specifics.version()); | |
| 310 EXPECT_EQ(kValidUpdateUrl2, dest_specifics.update_url()); | |
| 311 EXPECT_TRUE(dest_specifics.enabled()); | |
| 312 EXPECT_FALSE(dest_specifics.incognito_enabled()); | |
| 313 EXPECT_EQ(kName2, dest_specifics.name()); | |
| 314 } | |
| 315 | |
| 316 TEST_F(ExtensionUtilTest, AreExtensionSpecificsUserPropertiesEqual) { | |
| 317 sync_pb::ExtensionSpecifics a, b; | |
| 318 EXPECT_TRUE(AreExtensionSpecificsUserPropertiesEqual(a, b)); | |
| 319 | |
| 320 a.set_id("a"); | |
| 321 b.set_id("b"); | |
| 322 EXPECT_TRUE(AreExtensionSpecificsUserPropertiesEqual(a, b)); | |
| 323 | |
| 324 a.set_version("1.5"); | |
| 325 b.set_version("1.6"); | |
| 326 EXPECT_TRUE(AreExtensionSpecificsUserPropertiesEqual(a, b)); | |
| 327 | |
| 328 a.set_name("name"); | |
| 329 b.set_name("name2"); | |
| 330 EXPECT_TRUE(AreExtensionSpecificsUserPropertiesEqual(a, b)); | |
| 331 | |
| 332 a.set_update_url("http://www.foo.com"); | |
| 333 b.set_update_url("http://www.foo2.com"); | |
| 334 EXPECT_TRUE(AreExtensionSpecificsUserPropertiesEqual(a, b)); | |
| 335 | |
| 336 a.set_enabled(true); | |
| 337 EXPECT_FALSE(AreExtensionSpecificsUserPropertiesEqual(a, b)); | |
| 338 b.set_enabled(true); | |
| 339 EXPECT_TRUE(AreExtensionSpecificsUserPropertiesEqual(a, b)); | |
| 340 | |
| 341 a.set_incognito_enabled(true); | |
| 342 EXPECT_FALSE(AreExtensionSpecificsUserPropertiesEqual(a, b)); | |
| 343 b.set_incognito_enabled(true); | |
| 344 EXPECT_TRUE(AreExtensionSpecificsUserPropertiesEqual(a, b)); | |
| 345 } | |
| 346 | |
| 347 TEST_F(ExtensionUtilTest, AreExtensionSpecificsNonUserPropertiesEqual) { | |
| 348 sync_pb::ExtensionSpecifics a, b; | |
| 349 EXPECT_TRUE(AreExtensionSpecificsNonUserPropertiesEqual(a, b)); | |
| 350 | |
| 351 a.set_enabled(true); | |
| 352 b.set_enabled(false); | |
| 353 EXPECT_TRUE(AreExtensionSpecificsNonUserPropertiesEqual(a, b)); | |
| 354 | |
| 355 a.set_incognito_enabled(true); | |
| 356 b.set_incognito_enabled(false); | |
| 357 EXPECT_TRUE(AreExtensionSpecificsNonUserPropertiesEqual(a, b)); | |
| 358 | |
| 359 a.set_id("a"); | |
| 360 EXPECT_FALSE(AreExtensionSpecificsNonUserPropertiesEqual(a, b)); | |
| 361 b.set_id("a"); | |
| 362 EXPECT_TRUE(AreExtensionSpecificsNonUserPropertiesEqual(a, b)); | |
| 363 | |
| 364 a.set_version("1.5"); | |
| 365 EXPECT_FALSE(AreExtensionSpecificsNonUserPropertiesEqual(a, b)); | |
| 366 b.set_version("1.5"); | |
| 367 EXPECT_TRUE(AreExtensionSpecificsNonUserPropertiesEqual(a, b)); | |
| 368 | |
| 369 a.set_update_url("http://www.foo.com"); | |
| 370 EXPECT_FALSE(AreExtensionSpecificsNonUserPropertiesEqual(a, b)); | |
| 371 b.set_update_url("http://www.foo.com"); | |
| 372 EXPECT_TRUE(AreExtensionSpecificsNonUserPropertiesEqual(a, b)); | |
| 373 | |
| 374 a.set_name("name"); | |
| 375 EXPECT_FALSE(AreExtensionSpecificsNonUserPropertiesEqual(a, b)); | |
| 376 b.set_name("name"); | |
| 377 EXPECT_TRUE(AreExtensionSpecificsNonUserPropertiesEqual(a, b)); | |
| 378 } | |
| 379 | |
| 380 TEST_F(ExtensionUtilTest, MergeExtensionSpecificsWithUserProperties) { | |
| 381 sync_pb::ExtensionSpecifics merged_specifics; | |
| 382 merged_specifics.set_id(kValidId); | |
| 383 merged_specifics.set_update_url(kValidUpdateUrl1); | |
| 384 merged_specifics.set_enabled(true); | |
| 385 merged_specifics.set_incognito_enabled(false); | |
| 386 merged_specifics.set_version(kVersion2); | |
| 387 | |
| 388 sync_pb::ExtensionSpecifics specifics; | |
| 389 specifics.set_id(kValidId); | |
| 390 specifics.set_update_url(kValidUpdateUrl2); | |
| 391 merged_specifics.set_enabled(false); | |
| 392 merged_specifics.set_incognito_enabled(true); | |
| 393 | |
| 394 specifics.set_version(kVersion1); | |
| 395 { | |
| 396 sync_pb::ExtensionSpecifics result = merged_specifics; | |
| 397 MergeExtensionSpecifics(specifics, false, &result); | |
| 398 EXPECT_TRUE(AreExtensionSpecificsUserPropertiesEqual( | |
| 399 result, merged_specifics)); | |
| 400 EXPECT_TRUE(AreExtensionSpecificsNonUserPropertiesEqual( | |
| 401 result, merged_specifics)); | |
| 402 } | |
| 403 { | |
| 404 sync_pb::ExtensionSpecifics result = merged_specifics; | |
| 405 MergeExtensionSpecifics(specifics, true, &result); | |
| 406 EXPECT_TRUE(AreExtensionSpecificsEqual(result, merged_specifics)); | |
| 407 } | |
| 408 | |
| 409 specifics.set_version(kVersion2); | |
| 410 { | |
| 411 sync_pb::ExtensionSpecifics result = merged_specifics; | |
| 412 MergeExtensionSpecifics(specifics, false, &result); | |
| 413 EXPECT_TRUE(AreExtensionSpecificsUserPropertiesEqual( | |
| 414 result, merged_specifics)); | |
| 415 EXPECT_TRUE(AreExtensionSpecificsNonUserPropertiesEqual( | |
| 416 result, specifics)); | |
| 417 } | |
| 418 { | |
| 419 sync_pb::ExtensionSpecifics result = merged_specifics; | |
| 420 MergeExtensionSpecifics(specifics, true, &result); | |
| 421 EXPECT_TRUE(AreExtensionSpecificsEqual(result, specifics)); | |
| 422 } | |
| 423 | |
| 424 specifics.set_version(kVersion3); | |
| 425 { | |
| 426 sync_pb::ExtensionSpecifics result = merged_specifics; | |
| 427 MergeExtensionSpecifics(specifics, false, &result); | |
| 428 EXPECT_TRUE(AreExtensionSpecificsUserPropertiesEqual( | |
| 429 result, merged_specifics)); | |
| 430 EXPECT_TRUE(AreExtensionSpecificsNonUserPropertiesEqual( | |
| 431 result, specifics)); | |
| 432 } | |
| 433 { | |
| 434 sync_pb::ExtensionSpecifics result = merged_specifics; | |
| 435 MergeExtensionSpecifics(specifics, true, &result); | |
| 436 EXPECT_TRUE(AreExtensionSpecificsEqual(result, specifics)); | |
| 437 } | |
| 438 } | |
| 439 | |
| 440 TEST_F(ExtensionUtilTest, SpecificsToSyncData) { | 156 TEST_F(ExtensionUtilTest, SpecificsToSyncData) { |
| 441 sync_pb::ExtensionSpecifics specifics; | 157 sync_pb::ExtensionSpecifics specifics; |
| 442 specifics.set_id(kValidId); | 158 specifics.set_id(kValidId); |
| 443 specifics.set_update_url(kValidUpdateUrl2); | 159 specifics.set_update_url(kValidUpdateUrl2); |
| 444 specifics.set_enabled(false); | 160 specifics.set_enabled(false); |
| 445 specifics.set_incognito_enabled(true); | 161 specifics.set_incognito_enabled(true); |
| 446 specifics.set_version(kVersion1); | 162 specifics.set_version(kVersion1); |
| 447 specifics.set_name(kName); | 163 specifics.set_name(kName); |
| 448 | 164 |
| 449 ExtensionSyncData sync_data; | 165 ExtensionSyncData sync_data; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 474 EXPECT_EQ(sync_data.update_url.spec(), specifics.update_url()); | 190 EXPECT_EQ(sync_data.update_url.spec(), specifics.update_url()); |
| 475 EXPECT_EQ(sync_data.enabled, specifics.enabled()); | 191 EXPECT_EQ(sync_data.enabled, specifics.enabled()); |
| 476 EXPECT_EQ(sync_data.incognito_enabled, specifics.incognito_enabled()); | 192 EXPECT_EQ(sync_data.incognito_enabled, specifics.incognito_enabled()); |
| 477 EXPECT_EQ(sync_data.version.GetString(), specifics.version()); | 193 EXPECT_EQ(sync_data.version.GetString(), specifics.version()); |
| 478 EXPECT_EQ(sync_data.name, specifics.name()); | 194 EXPECT_EQ(sync_data.name, specifics.name()); |
| 479 } | 195 } |
| 480 | 196 |
| 481 } // namespace | 197 } // namespace |
| 482 | 198 |
| 483 } // namespace browser_sync | 199 } // namespace browser_sync |
| OLD | NEW |