| Index: chrome/browser/chromeos/arc/open_with_menu_controller_delegate_unittest.cc
|
| diff --git a/chrome/browser/chromeos/arc/open_with_menu_controller_delegate_unittest.cc b/chrome/browser/chromeos/arc/open_with_menu_controller_delegate_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0cf7d13f259bfc4301f3bca87addf73bd46cd814
|
| --- /dev/null
|
| +++ b/chrome/browser/chromeos/arc/open_with_menu_controller_delegate_unittest.cc
|
| @@ -0,0 +1,202 @@
|
| +// Copyright 2016 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/app/chrome_command_ids.h"
|
| +#include "chrome/browser/chromeos/arc/open_with_menu_controller_delegate.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace arc {
|
| +
|
| +// All tests in this file assume that 4 and 10 IDC command IDs are reserved
|
| +// for the main and sub menus, respectively.
|
| +
|
| +TEST(OpenWithMenuControllerDelegateTest, TestGetIndexForCommandId) {
|
| + ASSERT_EQ(4, IDC_CONTENT_CONTEXT_OPEN_WITH_LAST -
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH1 + 1);
|
| + ASSERT_EQ(10, IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP_LAST -
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP1 + 1);
|
| +
|
| + EXPECT_EQ(0, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH1));
|
| + EXPECT_EQ(1, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH2));
|
| + EXPECT_EQ(2, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH3));
|
| + EXPECT_EQ(-1, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH_LAST));
|
| + EXPECT_EQ(2, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP1)); // not 3
|
| + EXPECT_EQ(3, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP2));
|
| + EXPECT_EQ(4, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP3));
|
| + EXPECT_EQ(5, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP4));
|
| + EXPECT_EQ(6, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP5));
|
| + EXPECT_EQ(7, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP6));
|
| + EXPECT_EQ(8, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP7));
|
| + EXPECT_EQ(9, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP8));
|
| + EXPECT_EQ(10, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP9));
|
| + EXPECT_EQ(11, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP10));
|
| +
|
| + // Test with unknown ID.
|
| + EXPECT_EQ(-1, OpenWithMenuControllerDelegate::GetIndexForCommandIdForTesting(
|
| + IDC_CONTENT_CONTEXT_SEARCHWEBFOR));
|
| +}
|
| +
|
| +TEST(OpenWithMenuControllerDelegateTest, TestGetCommandIdsToEnable) {
|
| + std::set<int> result =
|
| + OpenWithMenuControllerDelegate::GetCommandIdsToEnableForTesting(0);
|
| + EXPECT_EQ(0U, result.size());
|
| +
|
| + result = OpenWithMenuControllerDelegate::GetCommandIdsToEnableForTesting(1);
|
| + EXPECT_EQ(1U, result.size());
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH1));
|
| +
|
| + result = OpenWithMenuControllerDelegate::GetCommandIdsToEnableForTesting(2);
|
| + EXPECT_EQ(2U, result.size());
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH1));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH2));
|
| +
|
| + result = OpenWithMenuControllerDelegate::GetCommandIdsToEnableForTesting(3);
|
| + EXPECT_EQ(3U, result.size());
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH1));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH2));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH3));
|
| +
|
| + // Test if app names will overflow to the sub menu.
|
| + result = OpenWithMenuControllerDelegate::GetCommandIdsToEnableForTesting(4);
|
| + EXPECT_EQ(5U, result.size()); // app names and "More"
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH1));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH2));
|
| + // In this case, IDC_CONTENT_CONTEXT_OPEN_WITH3 should be hidden.
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_LAST));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP1));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP2));
|
| +
|
| + result = OpenWithMenuControllerDelegate::GetCommandIdsToEnableForTesting(11);
|
| + EXPECT_EQ(12U, result.size());
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH1));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH2));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_LAST));
|
| + for (size_t i = 0; i < 9; ++i) {
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP1 + i))
|
| + << i;
|
| + }
|
| +
|
| + // The main and sub menus can show up to 12 (=3+10-1) app names.
|
| + result = OpenWithMenuControllerDelegate::GetCommandIdsToEnableForTesting(12);
|
| + EXPECT_EQ(13U, result.size());
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH1));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH2));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_LAST));
|
| + for (size_t i = 0; i < 10; ++i) {
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP1 + i))
|
| + << i;
|
| + }
|
| +
|
| + result = OpenWithMenuControllerDelegate::GetCommandIdsToEnableForTesting(13);
|
| + EXPECT_EQ(13U, result.size()); // still 13
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH1));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH2));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_LAST));
|
| + for (size_t i = 0; i < 10; ++i) { // still 10
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP1 + i))
|
| + << i;
|
| + }
|
| +
|
| + result =
|
| + OpenWithMenuControllerDelegate::GetCommandIdsToEnableForTesting(1000);
|
| + EXPECT_EQ(13U, result.size()); // still 13
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH1));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH2));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_LAST));
|
| + for (size_t i = 0; i < 10; ++i) { // still 10
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP1 + i))
|
| + << i;
|
| + }
|
| +}
|
| +
|
| +TEST(OpenWithMenuControllerDelegateTest, TestGetCommandIdsToDisable) {
|
| + std::set<int> result =
|
| + OpenWithMenuControllerDelegate::GetCommandIdsToDisableForTesting(0);
|
| + // 3 items for the main menu, 1 item for "More", and 10 items for the sub
|
| + // menu. 14 in total.
|
| + EXPECT_EQ(14U, result.size());
|
| +
|
| + result = OpenWithMenuControllerDelegate::GetCommandIdsToDisableForTesting(1);
|
| + EXPECT_EQ(13U, result.size());
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH2));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH3));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_LAST));
|
| + for (size_t i = 0; i < 10; ++i) {
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP1 + i))
|
| + << i;
|
| + }
|
| +
|
| + result = OpenWithMenuControllerDelegate::GetCommandIdsToDisableForTesting(2);
|
| + EXPECT_EQ(12U, result.size());
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH3));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_LAST));
|
| + for (size_t i = 0; i < 10; ++i) {
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP1 + i))
|
| + << i;
|
| + }
|
| +
|
| + result = OpenWithMenuControllerDelegate::GetCommandIdsToDisableForTesting(3);
|
| + EXPECT_EQ(11U, result.size());
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_LAST));
|
| + for (size_t i = 0; i < 10; ++i) {
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP1 + i))
|
| + << i;
|
| + }
|
| +
|
| + result = OpenWithMenuControllerDelegate::GetCommandIdsToDisableForTesting(4);
|
| + // The first 2 items in the main menu, "More", and the first 2 items in the
|
| + // sub menu are enalbed, hence 9 (=14-(2+1+2)).
|
| + EXPECT_EQ(9U, result.size());
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH3));
|
| + for (size_t i = 2; i < 10; ++i) {
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP1 + i))
|
| + << i;
|
| + }
|
| +
|
| + result = OpenWithMenuControllerDelegate::GetCommandIdsToDisableForTesting(11);
|
| + EXPECT_EQ(2U, result.size());
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH3));
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH_ARC_APP10));
|
| +
|
| + result = OpenWithMenuControllerDelegate::GetCommandIdsToDisableForTesting(12);
|
| + EXPECT_EQ(1U, result.size());
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH3));
|
| +
|
| + result = OpenWithMenuControllerDelegate::GetCommandIdsToDisableForTesting(13);
|
| + EXPECT_EQ(1U, result.size());
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH3));
|
| +
|
| + result =
|
| + OpenWithMenuControllerDelegate::GetCommandIdsToDisableForTesting(1000);
|
| + EXPECT_EQ(1U, result.size());
|
| + EXPECT_EQ(1U, result.count(IDC_CONTENT_CONTEXT_OPEN_WITH3));
|
| +}
|
| +
|
| +TEST(OpenWithMenuControllerDelegateTest, TestGetCommandIdsToEnableDisable) {
|
| + for (int apps = 0; apps < 20; ++apps) {
|
| + const size_t enabled =
|
| + OpenWithMenuControllerDelegate::GetCommandIdsToEnableForTesting(apps)
|
| + .size();
|
| + const size_t disabled =
|
| + OpenWithMenuControllerDelegate::GetCommandIdsToDisableForTesting(apps)
|
| + .size();
|
| + EXPECT_EQ(14U, enabled + disabled) << apps;
|
| + }
|
| +}
|
| +
|
| +} // namespace arc
|
|
|