blob: 1cfaae4706381cad89d698cff7df5470688fa603 [file] [log] [blame]
// 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.
// 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 "base/strings/string16.h"
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 {
PROCESS_ID,
MEMORY_FOOTPRINT,
V8_MEMORY,
V8_MEMORY_USED,
SQLITE_MEMORY_USED,
IDLE_WAKEUPS,
NETWORK_USE,
TOTAL_NETWORK_USE,
COLUMN_NONE, // Default value.
};
// 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(int resource_count,
const base::string16& 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 base::string16& title_pattern,
ColumnSpecifier column_specifier,
size_t min_column_value);
// ASCII matcher convenience functions for use with WaitForTaskManagerRows()
base::string16 MatchTab(const char* title); // "Tab: " + title
base::string16 MatchAnyTab(); // "Tab: *"
base::string16 MatchAboutBlankTab(); // "Tab: about:blank"
base::string16 MatchExtension(const char* title); // "Extension: " + title
base::string16 MatchAnyExtension(); // "Extension: *"
base::string16 MatchApp(const char* title); // "App: " + title
base::string16 MatchAnyApp(); // "App: *"
base::string16 MatchWebView(const char* title); // "WebView: " + title
base::string16 MatchAnyWebView(); // "WebView: *"
base::string16 MatchBackground(const char* title); // "Background: " + title
base::string16 MatchAnyBackground(); // "Background: *"
base::string16 MatchPrint(const char* title); // "Print: " + title
base::string16 MatchAnyPrint(); // "Print: *"
base::string16 MatchSubframe(const char* title); // "Subframe: " + title
base::string16 MatchAnySubframe(); // "Subframe: *"
// "Utility: " + title
base::string16 MatchUtility(const base::string16& title);
base::string16 MatchAnyUtility(); // "Utility: *"
} // namespace browsertest_util
} // namespace task_manager
#endif // CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_BROWSERTEST_UTIL_H_