| 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
| 8 #include "base/memory/scoped_vector.h" | 8 #include "base/memory/scoped_vector.h" |
| 9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 | 371 |
| 372 // A mock message service for tests of MenuManager::ExecuteCommand. | 372 // A mock message service for tests of MenuManager::ExecuteCommand. |
| 373 class MockExtensionEventRouter : public ExtensionEventRouter { | 373 class MockExtensionEventRouter : public ExtensionEventRouter { |
| 374 public: | 374 public: |
| 375 explicit MockExtensionEventRouter(Profile* profile) : | 375 explicit MockExtensionEventRouter(Profile* profile) : |
| 376 ExtensionEventRouter(profile) {} | 376 ExtensionEventRouter(profile) {} |
| 377 | 377 |
| 378 MOCK_METHOD6(DispatchEventToExtension, | 378 MOCK_METHOD6(DispatchEventToExtension, |
| 379 void(const std::string& extension_id, | 379 void(const std::string& extension_id, |
| 380 const std::string& event_name, | 380 const std::string& event_name, |
| 381 const std::string& event_args, | 381 base::ListValue* event_args, |
| 382 Profile* source_profile, | 382 Profile* source_profile, |
| 383 const GURL& event_url, | 383 const GURL& event_url, |
| 384 ExtensionEventRouter::UserGestureState state)); | 384 ExtensionEventRouter::UserGestureState state)); |
| 385 | 385 |
| 386 | 386 |
| 387 private: | 387 private: |
| 388 DISALLOW_COPY_AND_ASSIGN(MockExtensionEventRouter); | 388 DISALLOW_COPY_AND_ASSIGN(MockExtensionEventRouter); |
| 389 }; | 389 }; |
| 390 | 390 |
| 391 // A mock profile for tests of MenuManager::ExecuteCommand. | 391 // A mock profile for tests of MenuManager::ExecuteCommand. |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 467 MenuItem* item = CreateTestItem(extension); | 467 MenuItem* item = CreateTestItem(extension); |
| 468 MenuItem::Id id = item->id(); | 468 MenuItem::Id id = item->id(); |
| 469 ASSERT_TRUE(manager_.AddContextItem(extension, item)); | 469 ASSERT_TRUE(manager_.AddContextItem(extension, item)); |
| 470 | 470 |
| 471 EXPECT_CALL(profile, GetExtensionEventRouter()) | 471 EXPECT_CALL(profile, GetExtensionEventRouter()) |
| 472 .Times(1) | 472 .Times(1) |
| 473 .WillOnce(Return(mock_event_router.get())); | 473 .WillOnce(Return(mock_event_router.get())); |
| 474 | 474 |
| 475 // Use the magic of googlemock to save a parameter to our mock's | 475 // Use the magic of googlemock to save a parameter to our mock's |
| 476 // DispatchEventToExtension method into event_args. | 476 // DispatchEventToExtension method into event_args. |
| 477 std::string event_args; | 477 base::ListValue* list = NULL; |
| 478 { | 478 { |
| 479 InSequence s; | 479 InSequence s; |
| 480 EXPECT_CALL(*mock_event_router.get(), | 480 EXPECT_CALL(*mock_event_router.get(), |
| 481 DispatchEventToExtension( | 481 DispatchEventToExtension( |
| 482 item->extension_id(), | 482 item->extension_id(), |
| 483 extension_event_names::kOnContextMenus, | 483 extension_event_names::kOnContextMenus, |
| 484 _, | 484 _, |
| 485 &profile, | 485 &profile, |
| 486 GURL(), | 486 GURL(), |
| 487 ExtensionEventRouter::USER_GESTURE_ENABLED)) | 487 ExtensionEventRouter::USER_GESTURE_ENABLED)) |
| 488 .Times(1) | 488 .Times(1) |
| 489 .WillOnce(SaveArg<2>(&event_args)); | 489 .WillOnce(SaveArg<2>(&list)); |
| 490 EXPECT_CALL(*mock_event_router.get(), | 490 EXPECT_CALL(*mock_event_router.get(), |
| 491 DispatchEventToExtension( | 491 DispatchEventToExtension( |
| 492 item->extension_id(), | 492 item->extension_id(), |
| 493 extension_event_names::kOnContextMenuClicked, | 493 extension_event_names::kOnContextMenuClicked, |
| 494 _, | 494 _, |
| 495 &profile, | 495 &profile, |
| 496 GURL(), | 496 GURL(), |
| 497 ExtensionEventRouter::USER_GESTURE_ENABLED)) | 497 ExtensionEventRouter::USER_GESTURE_ENABLED)) |
| 498 .Times(1); | 498 .Times(1); |
| 499 } | 499 } |
| 500 manager_.ExecuteCommand(&profile, NULL /* tab_contents */, params, id); | 500 manager_.ExecuteCommand(&profile, NULL /* tab_contents */, params, id); |
| 501 | 501 |
| 502 // Parse the json event_args, which should turn into a 2-element list where | |
| 503 // the first element is a dictionary we want to inspect for the correct | |
| 504 // values. | |
| 505 scoped_ptr<Value> result( | |
| 506 base::JSONReader::Read(event_args, base::JSON_ALLOW_TRAILING_COMMAS)); | |
| 507 Value* value = result.get(); | |
| 508 ASSERT_TRUE(result.get() != NULL); | |
| 509 ASSERT_EQ(Value::TYPE_LIST, value->GetType()); | |
| 510 ListValue* list = static_cast<ListValue*>(value); | |
| 511 ASSERT_EQ(2u, list->GetSize()); | 502 ASSERT_EQ(2u, list->GetSize()); |
| 512 | 503 |
| 513 DictionaryValue* info; | 504 DictionaryValue* info; |
| 514 ASSERT_TRUE(list->GetDictionary(0, &info)); | 505 ASSERT_TRUE(list->GetDictionary(0, &info)); |
| 515 | 506 |
| 516 int tmp_id = 0; | 507 int tmp_id = 0; |
| 517 ASSERT_TRUE(info->GetInteger("menuItemId", &tmp_id)); | 508 ASSERT_TRUE(info->GetInteger("menuItemId", &tmp_id)); |
| 518 ASSERT_EQ(id.uid, tmp_id); | 509 ASSERT_EQ(id.uid, tmp_id); |
| 519 | 510 |
| 520 std::string tmp; | 511 std::string tmp; |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 619 ASSERT_TRUE(child1->checked()); | 610 ASSERT_TRUE(child1->checked()); |
| 620 | 611 |
| 621 // Removing |parent| should cause only |child1| to be selected. | 612 // Removing |parent| should cause only |child1| to be selected. |
| 622 manager_.RemoveContextMenuItem(parent->id()); | 613 manager_.RemoveContextMenuItem(parent->id()); |
| 623 parent = NULL; | 614 parent = NULL; |
| 624 ASSERT_FALSE(new_item->checked()); | 615 ASSERT_FALSE(new_item->checked()); |
| 625 ASSERT_TRUE(child1->checked()); | 616 ASSERT_TRUE(child1->checked()); |
| 626 } | 617 } |
| 627 | 618 |
| 628 } // namespace extensions | 619 } // namespace extensions |
| OLD | NEW |