Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2028)

Unified Diff: ash/common/shelf/shelf_application_menu_model_unittest.cc

Issue 2671923002: mash: Cleanup ash shelf application menu code. (Closed)
Patch Set: Add comments Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/common/shelf/shelf_application_menu_model.cc ('k') | ash/common/shelf/shelf_controller.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/common/shelf/shelf_application_menu_model_unittest.cc
diff --git a/ash/common/shelf/shelf_application_menu_model_unittest.cc b/ash/common/shelf/shelf_application_menu_model_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..704f47331daa1938cee9441e2da811474390354c
--- /dev/null
+++ b/ash/common/shelf/shelf_application_menu_model_unittest.cc
@@ -0,0 +1,130 @@
+// Copyright 2015 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 "ash/common/shelf/shelf_application_menu_model.h"
+
+#include <utility>
+
+#include "ash/public/cpp/shelf_application_menu_item.h"
+#include "base/macros.h"
+#include "base/memory/ptr_util.h"
+#include "base/strings/utf_string_conversions.h"
+#include "base/test/histogram_tester.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace ash {
+
+namespace {
+
+const char kNumItemsEnabledHistogramName[] =
+ "Ash.Shelf.Menu.NumItemsEnabledUponSelection";
+
+const char kSelectedMenuItemIndexHistogramName[] =
+ "Ash.Shelf.Menu.SelectedMenuItemIndex";
+
+} // namespace
+
+// Test API to provide internal access to a ShelfApplicationMenuModel.
+class ShelfApplicationMenuModelTestAPI {
+ public:
+ // Creates a test api to access the internals of the |menu|.
+ explicit ShelfApplicationMenuModelTestAPI(ShelfApplicationMenuModel* menu)
+ : menu_(menu) {}
+ ~ShelfApplicationMenuModelTestAPI() {}
+
+ // Give public access to this metrics recording functions.
+ void RecordMenuItemSelectedMetrics(int command_id,
+ int num_menu_items_enabled) {
+ menu_->RecordMenuItemSelectedMetrics(command_id, num_menu_items_enabled);
+ }
+
+ private:
+ // The ShelfApplicationMenuModel to provide internal access to. Not owned.
+ ShelfApplicationMenuModel* menu_;
+
+ DISALLOW_COPY_AND_ASSIGN(ShelfApplicationMenuModelTestAPI);
+};
+
+// Verifies the menu contents given an empty item list.
+TEST(ShelfApplicationMenuModelTest, VerifyContentsWithNoMenuItems) {
+ base::string16 title = base::ASCIIToUTF16("title");
+ ShelfApplicationMenuModel menu(title, ShelfAppMenuItemList());
+ // Expect the title with separators.
+ ASSERT_EQ(static_cast<int>(3), menu.GetItemCount());
+ EXPECT_EQ(ui::MenuModel::TYPE_SEPARATOR, menu.GetTypeAt(0));
+ EXPECT_EQ(ui::MenuModel::TYPE_COMMAND, menu.GetTypeAt(1));
+ EXPECT_EQ(title, menu.GetLabelAt(1));
+ EXPECT_FALSE(menu.IsEnabledAt(1));
+ EXPECT_EQ(ui::MenuModel::TYPE_SEPARATOR, menu.GetTypeAt(2));
+}
+
+// Verifies the menu contents given a non-empty item list.
+TEST(ShelfApplicationMenuModelTest, VerifyContentsWithMenuItems) {
+ ShelfAppMenuItemList items;
+ base::string16 title1 = base::ASCIIToUTF16("title1");
+ base::string16 title2 = base::ASCIIToUTF16("title2");
+ base::string16 title3 = base::ASCIIToUTF16("title3");
+ items.push_back(base::MakeUnique<ShelfApplicationMenuItem>(title1));
+ items.push_back(base::MakeUnique<ShelfApplicationMenuItem>(title2));
+ items.push_back(base::MakeUnique<ShelfApplicationMenuItem>(title3));
+
+ base::string16 title = base::ASCIIToUTF16("title");
+ ShelfApplicationMenuModel menu(title, std::move(items));
+ ShelfApplicationMenuModelTestAPI menu_test_api(&menu);
+
+ // Expect the title with separators, the enabled items, and another separator.
+ ASSERT_EQ(static_cast<int>(7), menu.GetItemCount());
+ EXPECT_EQ(ui::MenuModel::TYPE_SEPARATOR, menu.GetTypeAt(0));
+ EXPECT_EQ(ui::MenuModel::TYPE_COMMAND, menu.GetTypeAt(1));
+ EXPECT_EQ(title, menu.GetLabelAt(1));
+ EXPECT_FALSE(menu.IsEnabledAt(1));
+ EXPECT_EQ(ui::MenuModel::TYPE_SEPARATOR, menu.GetTypeAt(2));
+ EXPECT_EQ(ui::MenuModel::TYPE_COMMAND, menu.GetTypeAt(3));
+ EXPECT_EQ(title1, menu.GetLabelAt(3));
+ EXPECT_TRUE(menu.IsEnabledAt(3));
+ EXPECT_EQ(ui::MenuModel::TYPE_COMMAND, menu.GetTypeAt(4));
+ EXPECT_EQ(title2, menu.GetLabelAt(4));
+ EXPECT_TRUE(menu.IsEnabledAt(4));
+ EXPECT_EQ(ui::MenuModel::TYPE_COMMAND, menu.GetTypeAt(5));
+ EXPECT_EQ(title3, menu.GetLabelAt(5));
+ EXPECT_TRUE(menu.IsEnabledAt(5));
+ EXPECT_EQ(ui::MenuModel::TYPE_SEPARATOR, menu.GetTypeAt(6));
+}
+
+// Verifies RecordMenuItemSelectedMetrics uses the correct histogram buckets.
+TEST(ShelfApplicationMenuModelTest, VerifyHistogramBuckets) {
+ const int kCommandId = 3;
+ const int kNumMenuItemsEnabled = 7;
+
+ base::HistogramTester histogram_tester;
+
+ ShelfAppMenuItemList items;
+ ShelfApplicationMenuModel menu(base::ASCIIToUTF16("title"), std::move(items));
+ ShelfApplicationMenuModelTestAPI menu_test_api(&menu);
+ menu_test_api.RecordMenuItemSelectedMetrics(kCommandId, kNumMenuItemsEnabled);
+
+ histogram_tester.ExpectTotalCount(kNumItemsEnabledHistogramName, 1);
+ histogram_tester.ExpectBucketCount(kNumItemsEnabledHistogramName,
+ kNumMenuItemsEnabled, 1);
+
+ histogram_tester.ExpectTotalCount(kSelectedMenuItemIndexHistogramName, 1);
+ histogram_tester.ExpectBucketCount(kSelectedMenuItemIndexHistogramName,
+ kCommandId, 1);
+}
+
+// Verify histogram data is recorded when ExecuteCommand is called.
+TEST(ShelfApplicationMenuModelTest, VerifyHistogramOnExecute) {
+ base::HistogramTester histogram_tester;
+
+ ShelfAppMenuItemList items;
+ base::string16 title = base::ASCIIToUTF16("title");
+ items.push_back(base::MakeUnique<ShelfApplicationMenuItem>(title));
+ ShelfApplicationMenuModel menu(title, std::move(items));
+ menu.ExecuteCommand(0, 0);
+
+ histogram_tester.ExpectTotalCount(kNumItemsEnabledHistogramName, 1);
+ histogram_tester.ExpectTotalCount(kSelectedMenuItemIndexHistogramName, 1);
+}
+
+} // namespace ash
« no previous file with comments | « ash/common/shelf/shelf_application_menu_model.cc ('k') | ash/common/shelf/shelf_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698