blob: c1819d7fb371a256f151ba6a2e310df019e6257a [file] [log] [blame]
// 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 "chrome/browser/task_manager/providers/browser_process_task_provider.h"
#include "chrome/browser/task_manager/task_manager_observer.h"
#include "chrome/grit/generated_resources.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/l10n/l10n_util.h"
namespace task_manager {
class BrowserProcessTaskProviderTest
: public testing::Test,
public TaskProviderObserver {
public:
BrowserProcessTaskProviderTest()
: provided_task_(nullptr) {
}
BrowserProcessTaskProviderTest(const BrowserProcessTaskProviderTest&) =
delete;
BrowserProcessTaskProviderTest& operator=(
const BrowserProcessTaskProviderTest&) = delete;
~BrowserProcessTaskProviderTest() override = default;
// task_manager::TaskProviderObserver:
void TaskAdded(Task* task) override {
provided_task_ = task;
}
void TaskRemoved(Task* task) override {
// This will never be called in the case of a browser process task provider.
FAIL();
}
protected:
Task* provided_task_;
};
// Tests the browser process task provider and browser process task itself.
TEST_F(BrowserProcessTaskProviderTest, TestObserving) {
BrowserProcessTaskProvider provider;
EXPECT_EQ(nullptr, provided_task_);
provider.SetObserver(this);
EXPECT_NE(nullptr, provided_task_);
provider.ClearObserver();
EXPECT_NE(nullptr, provided_task_);
}
// Testing retrieving the task from the provider using the ids of a URL request.
TEST_F(BrowserProcessTaskProviderTest, GetTaskOfUrlRequest) {
BrowserProcessTaskProvider provider;
EXPECT_EQ(nullptr, provided_task_);
provider.SetObserver(this);
EXPECT_NE(nullptr, provided_task_);
Task* result = provider.GetTaskOfUrlRequest(2, 0);
EXPECT_EQ(nullptr, result);
result = provider.GetTaskOfUrlRequest(-1, 0);
EXPECT_EQ(provided_task_, result);
}
// Test the provided browser process task itself.
TEST_F(BrowserProcessTaskProviderTest, TestProvidedTask) {
BrowserProcessTaskProvider provider;
EXPECT_EQ(nullptr, provided_task_);
provider.SetObserver(this);
ASSERT_NE(nullptr, provided_task_);
EXPECT_EQ(base::GetCurrentProcessHandle(), provided_task_->process_handle());
EXPECT_EQ(base::GetCurrentProcId(), provided_task_->process_id());
EXPECT_FALSE(provided_task_->ReportsWebCacheStats());
EXPECT_EQ(l10n_util::GetStringUTF16(IDS_TASK_MANAGER_WEB_BROWSER_CELL_TEXT),
provided_task_->title());
EXPECT_EQ(Task::BROWSER, provided_task_->GetType());
EXPECT_EQ(0, provided_task_->GetChildProcessUniqueID());
const int received_bytes = 1024;
EXPECT_EQ(0, provided_task_->GetNetworkUsageRate());
provided_task_->OnNetworkBytesRead(received_bytes);
// Do a refresh with a 1-second update time.
provided_task_->Refresh(base::Seconds(1), REFRESH_TYPE_NETWORK_USAGE);
EXPECT_EQ(received_bytes, provided_task_->GetNetworkUsageRate());
}
} // namespace task_manager