chromium/chrome/browser/task_manager/task_manager_browsertest_util.h

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// These "task_manager::browsertest_util" functions allow you to wait for a
// task manager to show a particular state, enabling tests of the form "do
// something that ought to create a process, then wait for that process to show
// up in the Task Manager." They are intended to abstract away the details of
// the platform's TaskManager UI.

#ifndef CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_BROWSERTEST_UTIL_H_
#define CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_BROWSERTEST_UTIL_H_

#include <stddef.h>

#include <string>
#include <string_view>

namespace task_manager {
namespace browsertest_util {

// Specifies some integer-valued column of numeric data reported by the task
// manager model. Please add more here as needed by tests.
enum class ColumnSpecifier {};

// Runs the message loop, observing the task manager, until there are exactly
// |resource_count| many resources whose titles match the pattern
// |title_pattern|. The match is done via string_util's base::MatchPattern, so
// |title_pattern| may contain wildcards like "*".
//
// If the wait times out, this test will trigger a gtest failure. To get
// meaningful errors, tests should wrap invocations of this function with
// ASSERT_NO_FATAL_FAILURE().
void WaitForTaskManagerRows(size_t resource_count,
                            const std::u16string& title_pattern);

// Make the indicated TaskManager column be visible.
void ShowColumn(ColumnSpecifier column_specifier);

// Waits for the row identified by |title_pattern| to be showing a numeric data
// value of at least |min_column_value| in the task manager column identified by
// |column_specifier|. As with WaitForTaskManagerRows(), |title_pattern| is
// meant to be a string returned by MatchTab() or similar.
//
// To get meaningful errors, tests should wrap invocations of this function with
// ASSERT_NO_FATAL_FAILURE().
void WaitForTaskManagerStatToExceed(const std::u16string& title_pattern,
                                    ColumnSpecifier column_specifier,
                                    size_t min_column_value);

// ASCII matcher convenience functions for use with WaitForTaskManagerRows()
std::u16string MatchTab(std::string_view title);    // "Tab: " + title
std::u16string MatchAnyTab();                       // "Tab: *"
std::u16string MatchAboutBlankTab();                // "Tab: about:blank"
std::u16string MatchIncognitoTab(std::string_view title);
std::u16string MatchAnyIncognitoTab();
std::u16string MatchExtension(const char* title);   // "Extension: " + title
std::u16string MatchAnyExtension();                 // "Extension: *"
std::u16string MatchApp(const char* title);         // "App: " + title
std::u16string MatchAnyApp();                       // "App: *"
std::u16string MatchWebView(const char* title);     // "WebView: " + title
std::u16string MatchAnyWebView();                   // "WebView: *"
std::u16string MatchBackground(const char* title);  // "Background: " + title
std::u16string MatchAnyBackground();                // "Background: *"
std::u16string MatchPrint(const char* title);       // "Print: " + title
std::u16string MatchAnyPrint();                     // "Print: *"
std::u16string MatchSubframe(const char* title);    // "Subframe: " + title
std::u16string MatchAnySubframe();                  // "Subframe: *"
// "Utility: " + title
std::u16string MatchUtility(const std::u16string& title);
std::u16string MatchAnyUtility();  // "Utility: *"
std::u16string MatchBFCache(std::string_view title);
std::u16string MatchAnyBFCache();
std::u16string MatchPrerender(std::string_view title);
std::u16string MatchAnyPrerender();
std::u16string MatchFencedFrame(std::string_view title);
std::u16string MatchAnyFencedFrame();
std::u16string MatchIncognitoFencedFrame(std::string_view title);
std::u16string MatchAnyIncognitoFencedFrame();
}  // namespace browsertest_util
}  // namespace task_manager

#endif  // CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_BROWSERTEST_UTIL_H_