chromium/chrome/browser/error_reporting/chrome_js_error_report_processor_unittest.cc

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

#include "chrome/browser/error_reporting/chrome_js_error_report_processor.h"

#include <memory>
#include <utility>

#include "base/functional/callback.h"
#include "base/functional/callback_helpers.h"
#include "base/run_loop.h"
#include "base/strings/strcat.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/strings/utf_string_conversions.h"
#include "base/test/simple_test_clock.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/crash_upload_list/crash_upload_list.h"
#include "chrome/browser/error_reporting/mock_chrome_js_error_report_processor.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/test/base/testing_profile.h"
#include "components/crash/content/browser/error_reporting/javascript_error_report.h"
#include "components/crash/content/browser/error_reporting/mock_crash_endpoint.h"
#include "components/crash/core/app/crashpad.h"
#include "components/upload_list/upload_list.h"
#include "content/public/test/browser_task_environment.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/text/bytes_formatting.h"

AllOf;
EndsWith;
HasSubstr;
SizeIs;
StartsWith;

JavaScriptErrorReport MakeErrorReport(const std::string& message) {}

std::string JoinStringPairs(const base::StringPairs& pairs) {}

class ChromeJsErrorReportProcessorTest : public ::testing::Test {};

constexpr time_t ChromeJsErrorReportProcessorTest::kFakeNow;
constexpr char ChromeJsErrorReportProcessorTest::kFirstMessage[];
constexpr char ChromeJsErrorReportProcessorTest::kFirstMessageQuery[];
constexpr char ChromeJsErrorReportProcessorTest::kSecondMessage[];
constexpr char ChromeJsErrorReportProcessorTest::kSecondMessageQuery[];
constexpr char ChromeJsErrorReportProcessorTest::kThirdMessage[];
constexpr char ChromeJsErrorReportProcessorTest::kThirdMessageQuery[];
constexpr char ChromeJsErrorReportProcessorTest::kProduct[];
constexpr char ChromeJsErrorReportProcessorTest::kSecondProduct[];

TEST_F(ChromeJsErrorReportProcessorTest, Basic) {}

void ChromeJsErrorReportProcessorTest::TestAllFields() {}

TEST_F(ChromeJsErrorReportProcessorTest, AllFields) {}

#if !BUILDFLAG(IS_CHROMEOS)
// On Chrome OS, consent checks are handled in the crash_reporter, not in the
// browser.
TEST_F(ChromeJsErrorReportProcessorTest, NoConsent) {}
#endif  // !BUILDFLAG(IS_CHROMEOS)

TEST_F(ChromeJsErrorReportProcessorTest, StackTraceWithErrorMessage) {}

TEST_F(ChromeJsErrorReportProcessorTest, RedactMessage) {}

TEST_F(ChromeJsErrorReportProcessorTest, TruncateMessage) {}

TEST_F(ChromeJsErrorReportProcessorTest, TruncateMessageWithEscapes) {}

TEST_F(ChromeJsErrorReportProcessorTest, NoMoreThanOneDuplicatePerHour) {}

TEST_F(ChromeJsErrorReportProcessorTest, MultipleDistinctReportsAllowed) {}

TEST_F(ChromeJsErrorReportProcessorTest, DuplicatesAllowedAfterAnHour) {}

TEST_F(ChromeJsErrorReportProcessorTest, DuplicateTimingIsIndependent) {}

TEST_F(ChromeJsErrorReportProcessorTest,
       BackwardsClockResetsAllDuplicateBlocks) {}

TEST_F(ChromeJsErrorReportProcessorTest,
       BackwardsClockResetsSomeDuplicateBlocks) {}
TEST_F(ChromeJsErrorReportProcessorTest, DuplicateMapIsCleanedUpAfterAnHour) {}

TEST_F(ChromeJsErrorReportProcessorTest, DifferentProductsAreDistinct) {}

TEST_F(ChromeJsErrorReportProcessorTest, DifferentLineNumbersAreDistinct) {}

TEST_F(ChromeJsErrorReportProcessorTest, DifferentColumnNumbersAreDistinct) {}

#if !BUILDFLAG(IS_CHROMEOS)
static std::string UploadInfoStateToString(
    UploadList::UploadInfo::State state) {}

static std::string UploadInfoVectorToString(
    const std::vector<const UploadList::UploadInfo*>& uploads) {}

TEST_F(ChromeJsErrorReportProcessorTest, UpdatesUploadsLog) {}
#endif  // !BUILDFLAG(IS_CHROMEOS)

#if BUILDFLAG(IS_CHROMEOS)
TEST_F(ChromeJsErrorReportProcessorTest, WorksWithoutMemfdCreate) {
  processor_->set_force_non_memfd_for_test();
  TestAllFields();
}
#endif  // BUILDFLAG(IS_CHROMEOS)