Commit dea6441d authored by sque's avatar sque Committed by Commit Bot

Rename SingleLogSource to SingleLogFileLogSource

Since there is now a class SingleDebugDaemonLogSource, the old
name "SingleLogSource" is ambiguous. Rename it to indicate that the
logs come from a log file.

Also refactored the use of SingleLogSource in feedbackPrivate API:
- Use the base interface class SystemLogsSource instead, in
  LogSourceAccessManager.
- Convert from feedback_private::LogSource directly to a
  SystemLogSource in SingleLogSourceFactory. Conversion of enums is
  internal to SingleLogSourceFactory.

BUG=733846

Review-Url: https://codereview.chromium.org/2956513004
Cr-Commit-Position: refs/heads/master@{#485283}
parent 538f75da
...@@ -1439,8 +1439,8 @@ source_set("chromeos") { ...@@ -1439,8 +1439,8 @@ source_set("chromeos") {
"system_logs/lsb_release_log_source.h", "system_logs/lsb_release_log_source.h",
"system_logs/single_debug_daemon_log_source.cc", "system_logs/single_debug_daemon_log_source.cc",
"system_logs/single_debug_daemon_log_source.h", "system_logs/single_debug_daemon_log_source.h",
"system_logs/single_log_source.cc", "system_logs/single_log_file_log_source.cc",
"system_logs/single_log_source.h", "system_logs/single_log_file_log_source.h",
"system_logs/touch_log_source.h", "system_logs/touch_log_source.h",
"system_logs/touch_log_source_ozone.cc", "system_logs/touch_log_source_ozone.cc",
"system_logs/touch_log_source_x11.cc", "system_logs/touch_log_source_x11.cc",
...@@ -1870,7 +1870,7 @@ source_set("unit_tests") { ...@@ -1870,7 +1870,7 @@ source_set("unit_tests") {
"system/automatic_reboot_manager_unittest.cc", "system/automatic_reboot_manager_unittest.cc",
"system/device_disabling_manager_unittest.cc", "system/device_disabling_manager_unittest.cc",
"system_logs/single_debug_daemon_log_source_unittest.cc", "system_logs/single_debug_daemon_log_source_unittest.cc",
"system_logs/single_log_source_unittest.cc", "system_logs/single_log_file_log_source_unittest.cc",
"tether/tether_service_unittest.cc", "tether/tether_service_unittest.cc",
"ui/accessibility_focus_ring_controller_unittest.cc", "ui/accessibility_focus_ring_controller_unittest.cc",
"ui/idle_app_name_notification_view_unittest.cc", "ui/idle_app_name_notification_view_unittest.cc",
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/chromeos/system_logs/single_log_source.h" #include "chrome/browser/chromeos/system_logs/single_log_file_log_source.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/files/file_path.h" #include "base/files/file_path.h"
...@@ -34,13 +34,13 @@ const base::Time* g_chrome_start_time_for_test = nullptr; ...@@ -34,13 +34,13 @@ const base::Time* g_chrome_start_time_for_test = nullptr;
// base system log directory path. In the future, if non-file source types are // base system log directory path. In the future, if non-file source types are
// added, this function should return an empty file path. // added, this function should return an empty file path.
base::FilePath GetLogFileSourceRelativeFilePath( base::FilePath GetLogFileSourceRelativeFilePath(
SingleLogSource::SupportedSource source) { SingleLogFileLogSource::SupportedSource source) {
switch (source) { switch (source) {
case SingleLogSource::SupportedSource::kMessages: case SingleLogFileLogSource::SupportedSource::kMessages:
return base::FilePath("messages"); return base::FilePath("messages");
case SingleLogSource::SupportedSource::kUiLatest: case SingleLogFileLogSource::SupportedSource::kUiLatest:
return base::FilePath("ui/ui.LATEST"); return base::FilePath("ui/ui.LATEST");
case SingleLogSource::SupportedSource::kAtrusLog: case SingleLogFileLogSource::SupportedSource::kAtrusLog:
return base::FilePath("atrus.log"); return base::FilePath("atrus.log");
} }
NOTREACHED(); NOTREACHED();
...@@ -134,7 +134,7 @@ size_t GetFirstFileOffsetWithTime(const base::FilePath& path, ...@@ -134,7 +134,7 @@ size_t GetFirstFileOffsetWithTime(const base::FilePath& path,
} // namespace } // namespace
SingleLogSource::SingleLogSource(SupportedSource source_type) SingleLogFileLogSource::SingleLogFileLogSource(SupportedSource source_type)
: SystemLogsSource(GetLogFileSourceRelativeFilePath(source_type).value()), : SystemLogsSource(GetLogFileSourceRelativeFilePath(source_type).value()),
source_type_(source_type), source_type_(source_type),
log_file_dir_path_(kDefaultSystemLogDirPath), log_file_dir_path_(kDefaultSystemLogDirPath),
...@@ -142,15 +142,15 @@ SingleLogSource::SingleLogSource(SupportedSource source_type) ...@@ -142,15 +142,15 @@ SingleLogSource::SingleLogSource(SupportedSource source_type)
file_inode_(0), file_inode_(0),
weak_ptr_factory_(this) {} weak_ptr_factory_(this) {}
SingleLogSource::~SingleLogSource() {} SingleLogFileLogSource::~SingleLogFileLogSource() {}
// static // static
void SingleLogSource::SetChromeStartTimeForTesting( void SingleLogFileLogSource::SetChromeStartTimeForTesting(
const base::Time* start_time) { const base::Time* start_time) {
g_chrome_start_time_for_test = start_time; g_chrome_start_time_for_test = start_time;
} }
void SingleLogSource::Fetch(const SysLogsSourceCallback& callback) { void SingleLogFileLogSource::Fetch(const SysLogsSourceCallback& callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DCHECK(!callback.is_null()); DCHECK(!callback.is_null());
...@@ -158,17 +158,18 @@ void SingleLogSource::Fetch(const SysLogsSourceCallback& callback) { ...@@ -158,17 +158,18 @@ void SingleLogSource::Fetch(const SysLogsSourceCallback& callback) {
base::PostTaskWithTraitsAndReply( base::PostTaskWithTraitsAndReply(
FROM_HERE, FROM_HERE,
base::TaskTraits(base::MayBlock(), base::TaskPriority::BACKGROUND), base::TaskTraits(base::MayBlock(), base::TaskPriority::BACKGROUND),
base::Bind(&SingleLogSource::ReadFile, weak_ptr_factory_.GetWeakPtr(), base::Bind(&SingleLogFileLogSource::ReadFile,
weak_ptr_factory_.GetWeakPtr(),
kMaxNumAllowedLogRotationsDuringFileRead, response), kMaxNumAllowedLogRotationsDuringFileRead, response),
base::Bind(callback, base::Owned(response))); base::Bind(callback, base::Owned(response)));
} }
base::FilePath SingleLogSource::GetLogFilePath() const { base::FilePath SingleLogFileLogSource::GetLogFilePath() const {
return base::FilePath(log_file_dir_path_).Append(source_name()); return base::FilePath(log_file_dir_path_).Append(source_name());
} }
void SingleLogSource::ReadFile(size_t num_rotations_allowed, void SingleLogFileLogSource::ReadFile(size_t num_rotations_allowed,
SystemLogsResponse* result) { SystemLogsResponse* result) {
// Attempt to open the file if it was not previously opened. // Attempt to open the file if it was not previously opened.
if (!file_.IsValid()) { if (!file_.IsValid()) {
file_.Initialize(GetLogFilePath(), file_.Initialize(GetLogFilePath(),
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_SYSTEM_LOGS_SINGLE_LOG_SOURCE_H_ #ifndef CHROME_BROWSER_CHROMEOS_SYSTEM_LOGS_SINGLE_LOG_FILE_LOG_SOURCE_H_
#define CHROME_BROWSER_CHROMEOS_SYSTEM_LOGS_SINGLE_LOG_SOURCE_H_ #define CHROME_BROWSER_CHROMEOS_SYSTEM_LOGS_SINGLE_LOG_FILE_LOG_SOURCE_H_
#include <stddef.h> #include <stddef.h>
#include <sys/types.h> #include <sys/types.h>
...@@ -21,7 +21,7 @@ class Time; ...@@ -21,7 +21,7 @@ class Time;
namespace system_logs { namespace system_logs {
// Gathers log data from a single source, possibly incrementally. // Gathers log data from a single source, possibly incrementally.
class SingleLogSource : public SystemLogsSource { class SingleLogFileLogSource : public SystemLogsSource {
public: public:
enum class SupportedSource { enum class SupportedSource {
// For /var/log/messages. // For /var/log/messages.
...@@ -34,8 +34,8 @@ class SingleLogSource : public SystemLogsSource { ...@@ -34,8 +34,8 @@ class SingleLogSource : public SystemLogsSource {
kAtrusLog, kAtrusLog,
}; };
explicit SingleLogSource(SupportedSource source); explicit SingleLogFileLogSource(SupportedSource source);
~SingleLogSource() override; ~SingleLogFileLogSource() override;
// During testing, use this to set a custom Chrome start time to override the // During testing, use this to set a custom Chrome start time to override the
// actual start time. Does not take ownership of |start_time|. Call this again // actual start time. Does not take ownership of |start_time|. Call this again
...@@ -46,7 +46,7 @@ class SingleLogSource : public SystemLogsSource { ...@@ -46,7 +46,7 @@ class SingleLogSource : public SystemLogsSource {
void Fetch(const SysLogsSourceCallback& callback) override; void Fetch(const SysLogsSourceCallback& callback) override;
private: private:
friend class SingleLogSourceTest; friend class SingleLogFileLogSourceTest;
// Returns the full path of the log file. // Returns the full path of the log file.
base::FilePath GetLogFilePath() const; base::FilePath GetLogFilePath() const;
...@@ -85,11 +85,11 @@ class SingleLogSource : public SystemLogsSource { ...@@ -85,11 +85,11 @@ class SingleLogSource : public SystemLogsSource {
// For removing PII from log results. // For removing PII from log results.
feedback::AnonymizerTool anonymizer_; feedback::AnonymizerTool anonymizer_;
base::WeakPtrFactory<SingleLogSource> weak_ptr_factory_; base::WeakPtrFactory<SingleLogFileLogSource> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(SingleLogSource); DISALLOW_COPY_AND_ASSIGN(SingleLogFileLogSource);
}; };
} // namespace system_logs } // namespace system_logs
#endif // CHROME_BROWSER_CHROMEOS_SYSTEM_LOGS_SINGLE_LOG_SOURCE_H_ #endif // CHROME_BROWSER_CHROMEOS_SYSTEM_LOGS_SINGLE_LOG_FILE_LOG_SOURCE_H_
...@@ -18,12 +18,12 @@ namespace extensions { ...@@ -18,12 +18,12 @@ namespace extensions {
namespace { namespace {
using api::feedback_private::LogSource;
using api::feedback_private::ReadLogSourceResult; using api::feedback_private::ReadLogSourceResult;
using api::feedback_private::ReadLogSourceParams; using api::feedback_private::ReadLogSourceParams;
using base::TimeDelta; using base::TimeDelta;
using system_logs::SingleLogSource;
using system_logs::SystemLogsResponse; using system_logs::SystemLogsResponse;
using SupportedSource = system_logs::SingleLogSource::SupportedSource; using system_logs::SystemLogsSource;
std::unique_ptr<KeyedService> ApiResourceManagerTestFactory( std::unique_ptr<KeyedService> ApiResourceManagerTestFactory(
content::BrowserContext* context) { content::BrowserContext* context) {
...@@ -41,12 +41,12 @@ std::string ParamsToJSON(const ReadLogSourceParams& params) { ...@@ -41,12 +41,12 @@ std::string ParamsToJSON(const ReadLogSourceParams& params) {
return params_json_string; return params_json_string;
} }
// A dummy SingleLogSource that does not require real system logs to be // A dummy SystemLogsSource that does not require real system logs to be
// available during testing. // available during testing.
class TestSingleLogSource : public SingleLogSource { class TestSingleLogSource : public SystemLogsSource {
public: public:
explicit TestSingleLogSource(SupportedSource type) explicit TestSingleLogSource(LogSource type)
: SingleLogSource(type), call_count_(0) {} : SystemLogsSource(ToString(type)), call_count_(0) {}
~TestSingleLogSource() override = default; ~TestSingleLogSource() override = default;
...@@ -66,7 +66,7 @@ class TestSingleLogSource : public SingleLogSource { ...@@ -66,7 +66,7 @@ class TestSingleLogSource : public SingleLogSource {
// Do not directly pass the result to the callback, because that's not how // Do not directly pass the result to the callback, because that's not how
// log sources actually work. Instead, simulate the asynchronous operation // log sources actually work. Instead, simulate the asynchronous operation
// of a SingleLogSource by invoking the callback separately. // of a SystemLogsSource by invoking the callback separately.
base::ThreadTaskRunnerHandle::Get()->PostTask( base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(callback, base::Owned(result_map))); FROM_HERE, base::BindOnce(callback, base::Owned(result_map)));
} }
...@@ -74,7 +74,7 @@ class TestSingleLogSource : public SingleLogSource { ...@@ -74,7 +74,7 @@ class TestSingleLogSource : public SingleLogSource {
// Instantiates a new instance of this class. Does not retain ownership. Used // Instantiates a new instance of this class. Does not retain ownership. Used
// to create a Callback that can be used to override the default behavior of // to create a Callback that can be used to override the default behavior of
// SingleLogSourceFactory. // SingleLogSourceFactory.
static std::unique_ptr<SingleLogSource> Create(SupportedSource type) { static std::unique_ptr<SystemLogsSource> Create(LogSource type) {
return base::MakeUnique<TestSingleLogSource>(type); return base::MakeUnique<TestSingleLogSource>(type);
} }
......
...@@ -20,9 +20,7 @@ namespace extensions { ...@@ -20,9 +20,7 @@ namespace extensions {
namespace { namespace {
namespace feedback_private = api::feedback_private; namespace feedback_private = api::feedback_private;
using feedback_private::LogSource;
using SingleLogSource = system_logs::SingleLogSource;
using SupportedSource = system_logs::SingleLogSource::SupportedSource;
using SystemLogsResponse = system_logs::SystemLogsResponse; using SystemLogsResponse = system_logs::SystemLogsResponse;
const int kMaxReadersPerSource = 10; const int kMaxReadersPerSource = 10;
...@@ -40,22 +38,6 @@ base::TimeDelta GetMinTimeBetweenReads() { ...@@ -40,22 +38,6 @@ base::TimeDelta GetMinTimeBetweenReads() {
: base::TimeDelta::FromMilliseconds(kDefaultRateLimitingTimeoutMs); : base::TimeDelta::FromMilliseconds(kDefaultRateLimitingTimeoutMs);
} }
// Converts from feedback_private::LogSource to SupportedSource.
SupportedSource GetSupportedSourceType(LogSource source) {
switch (source) {
case feedback_private::LOG_SOURCE_MESSAGES:
return SupportedSource::kMessages;
case feedback_private::LOG_SOURCE_UILATEST:
return SupportedSource::kUiLatest;
case feedback_private::LOG_SOURCE_NONE:
default:
NOTREACHED() << "Unknown log source type.";
return SingleLogSource::SupportedSource::kMessages;
}
NOTREACHED();
return SingleLogSource::SupportedSource::kMessages;
}
// SystemLogsResponse is a map of strings -> strings. The map value has the // SystemLogsResponse is a map of strings -> strings. The map value has the
// actual log contents, a string containing all lines, separated by newlines. // actual log contents, a string containing all lines, separated by newlines.
// This function extracts the individual lines and converts them into a vector // This function extracts the individual lines and converts them into a vector
...@@ -155,7 +137,7 @@ void LogSourceAccessManager::RemoveSource(const SourceAndExtension& key) { ...@@ -155,7 +137,7 @@ void LogSourceAccessManager::RemoveSource(const SourceAndExtension& key) {
} }
LogSourceAccessManager::SourceAndExtension::SourceAndExtension( LogSourceAccessManager::SourceAndExtension::SourceAndExtension(
api::feedback_private::LogSource source, feedback_private::LogSource source,
const std::string& extension_id) const std::string& extension_id)
: source(source), extension_id(extension_id) {} : source(source), extension_id(extension_id) {}
...@@ -173,8 +155,7 @@ int LogSourceAccessManager::CreateResource(const SourceAndExtension& key) { ...@@ -173,8 +155,7 @@ int LogSourceAccessManager::CreateResource(const SourceAndExtension& key) {
std::unique_ptr<LogSourceResource> new_resource = std::unique_ptr<LogSourceResource> new_resource =
base::MakeUnique<LogSourceResource>( base::MakeUnique<LogSourceResource>(
key.extension_id, key.extension_id,
SingleLogSourceFactory::CreateSingleLogSource( SingleLogSourceFactory::CreateSingleLogSource(key.source),
GetSupportedSourceType(key.source)),
base::Bind(&LogSourceAccessManager::RemoveSource, base::Bind(&LogSourceAccessManager::RemoveSource,
weak_factory_.GetWeakPtr(), key)); weak_factory_.GetWeakPtr(), key));
...@@ -206,7 +187,7 @@ base::TimeTicks LogSourceAccessManager::GetLastExtensionAccessTime( ...@@ -206,7 +187,7 @@ base::TimeTicks LogSourceAccessManager::GetLastExtensionAccessTime(
} }
size_t LogSourceAccessManager::GetNumActiveResourcesForSource( size_t LogSourceAccessManager::GetNumActiveResourcesForSource(
api::feedback_private::LogSource source) const { feedback_private::LogSource source) const {
size_t count = 0; size_t count = 0;
// The stored entries are sorted first by source type, then by extension ID. // The stored entries are sorted first by source type, then by extension ID.
// We can take advantage of this fact to avoid iterating over all elements. // We can take advantage of this fact to avoid iterating over all elements.
......
...@@ -19,10 +19,10 @@ namespace { ...@@ -19,10 +19,10 @@ namespace {
using api::feedback_private::LOG_SOURCE_MESSAGES; using api::feedback_private::LOG_SOURCE_MESSAGES;
using api::feedback_private::LOG_SOURCE_UILATEST; using api::feedback_private::LOG_SOURCE_UILATEST;
using api::feedback_private::LogSource;
using api::feedback_private::ReadLogSourceResult; using api::feedback_private::ReadLogSourceResult;
using api::feedback_private::ReadLogSourceParams; using api::feedback_private::ReadLogSourceParams;
using system_logs::SingleLogSource; using system_logs::SystemLogsSource;
using SupportedSource = system_logs::SingleLogSource::SupportedSource;
std::unique_ptr<KeyedService> ApiResourceManagerTestFactory( std::unique_ptr<KeyedService> ApiResourceManagerTestFactory(
content::BrowserContext* context) { content::BrowserContext* context) {
...@@ -32,11 +32,12 @@ std::unique_ptr<KeyedService> ApiResourceManagerTestFactory( ...@@ -32,11 +32,12 @@ std::unique_ptr<KeyedService> ApiResourceManagerTestFactory(
// Dummy function used as a callback for FetchFromSource(). // Dummy function used as a callback for FetchFromSource().
void OnFetchedFromSource(const ReadLogSourceResult& result) {} void OnFetchedFromSource(const ReadLogSourceResult& result) {}
// A dummy SingleLogSource that does not require real system logs to be // A dummy SystemLogsSource that does not require real system logs to be
// available during testing. Always returns an empty result. // available during testing. Always returns an empty result.
class EmptySingleLogSource : public SingleLogSource { class EmptySingleLogSource : public system_logs::SystemLogsSource {
public: public:
explicit EmptySingleLogSource(SupportedSource type) : SingleLogSource(type) {} explicit EmptySingleLogSource(LogSource type)
: SystemLogsSource(api::feedback_private::ToString(type)) {}
~EmptySingleLogSource() override = default; ~EmptySingleLogSource() override = default;
...@@ -47,7 +48,7 @@ class EmptySingleLogSource : public SingleLogSource { ...@@ -47,7 +48,7 @@ class EmptySingleLogSource : public SingleLogSource {
// Do not directly pass the result to the callback, because that's not how // Do not directly pass the result to the callback, because that's not how
// log sources actually work. Instead, simulate the asynchronous operation // log sources actually work. Instead, simulate the asynchronous operation
// of a SingleLogSource by invoking the callback separately. // of a SystemLogsSource by invoking the callback separately.
base::ThreadTaskRunnerHandle::Get()->PostTask( base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(callback, base::Owned(result_map))); FROM_HERE, base::BindOnce(callback, base::Owned(result_map)));
} }
...@@ -55,7 +56,7 @@ class EmptySingleLogSource : public SingleLogSource { ...@@ -55,7 +56,7 @@ class EmptySingleLogSource : public SingleLogSource {
// Instantiates a new instance of this class. Does not retain ownership. Used // Instantiates a new instance of this class. Does not retain ownership. Used
// to create a Callback that can be used to override the default behavior of // to create a Callback that can be used to override the default behavior of
// SingleLogSourceFactory. // SingleLogSourceFactory.
static std::unique_ptr<SingleLogSource> Create(SupportedSource type) { static std::unique_ptr<SystemLogsSource> Create(LogSource type) {
return base::MakeUnique<EmptySingleLogSource>(type); return base::MakeUnique<EmptySingleLogSource>(type);
} }
......
...@@ -22,7 +22,7 @@ ApiResourceManager<LogSourceResource>::GetFactoryInstance() { ...@@ -22,7 +22,7 @@ ApiResourceManager<LogSourceResource>::GetFactoryInstance() {
LogSourceResource::LogSourceResource( LogSourceResource::LogSourceResource(
const std::string& extension_id, const std::string& extension_id,
std::unique_ptr<system_logs::SingleLogSource> source, std::unique_ptr<system_logs::SystemLogsSource> source,
base::Closure unregister_callback) base::Closure unregister_callback)
: ApiResource(extension_id), : ApiResource(extension_id),
source_(source.release()), source_(source.release()),
......
...@@ -9,14 +9,14 @@ ...@@ -9,14 +9,14 @@
#include "base/callback_helpers.h" #include "base/callback_helpers.h"
#include "base/macros.h" #include "base/macros.h"
#include "chrome/browser/chromeos/system_logs/single_log_source.h"
#include "chrome/browser/extensions/api/feedback_private/log_source_access_manager.h" #include "chrome/browser/extensions/api/feedback_private/log_source_access_manager.h"
#include "chrome/browser/feedback/system_logs/system_logs_fetcher.h"
#include "extensions/browser/api/api_resource.h" #include "extensions/browser/api/api_resource.h"
#include "extensions/browser/api/api_resource_manager.h" #include "extensions/browser/api/api_resource_manager.h"
namespace extensions { namespace extensions {
// Holds a SingleLogSource object that is used by an extension using the // Holds a SystemLogsSource object that is used by an extension using the
// feedbackPrivate API. // feedbackPrivate API.
class LogSourceResource : public ApiResource { class LogSourceResource : public ApiResource {
public: public:
...@@ -24,18 +24,18 @@ class LogSourceResource : public ApiResource { ...@@ -24,18 +24,18 @@ class LogSourceResource : public ApiResource {
content::BrowserThread::UI; content::BrowserThread::UI;
LogSourceResource(const std::string& extension_id, LogSourceResource(const std::string& extension_id,
std::unique_ptr<system_logs::SingleLogSource> source, std::unique_ptr<system_logs::SystemLogsSource> source,
base::Closure unregister_callback_); base::Closure unregister_callback_);
~LogSourceResource() override; ~LogSourceResource() override;
system_logs::SingleLogSource* GetLogSource() const { return source_.get(); } system_logs::SystemLogsSource* GetLogSource() const { return source_.get(); }
private: private:
friend class ApiResourceManager<LogSourceResource>; friend class ApiResourceManager<LogSourceResource>;
static const char* service_name() { return "LogSourceResource"; } static const char* service_name() { return "LogSourceResource"; }
std::unique_ptr<system_logs::SingleLogSource> source_; std::unique_ptr<system_logs::SystemLogsSource> source_;
// This unregisters the LogSourceResource from a LogSourceAccessManager when // This unregisters the LogSourceResource from a LogSourceAccessManager when
// this resource is cleaned up. Just pass in a base::Closure to the // this resource is cleaned up. Just pass in a base::Closure to the
......
...@@ -5,23 +5,40 @@ ...@@ -5,23 +5,40 @@
#include "chrome/browser/extensions/api/feedback_private/single_log_source_factory.h" #include "chrome/browser/extensions/api/feedback_private/single_log_source_factory.h"
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
#include "chrome/browser/chromeos/system_logs/single_log_file_log_source.h"
namespace extensions { namespace extensions {
namespace { namespace {
using system_logs::SingleLogSource; namespace feedback_private = api::feedback_private;
using system_logs::SingleLogFileLogSource;
using system_logs::SystemLogsSource;
SingleLogSourceFactory::CreateCallback* g_callback = nullptr; SingleLogSourceFactory::CreateCallback* g_callback = nullptr;
} // namespace } // namespace
// static // static
std::unique_ptr<SingleLogSource> SingleLogSourceFactory::CreateSingleLogSource( std::unique_ptr<SystemLogsSource> SingleLogSourceFactory::CreateSingleLogSource(
SingleLogSource::SupportedSource type) { feedback_private::LogSource source_type) {
if (g_callback) if (g_callback)
return g_callback->Run(type); return g_callback->Run(source_type);
return base::MakeUnique<SingleLogSource>(type);
switch (source_type) {
case feedback_private::LOG_SOURCE_MESSAGES:
return base::MakeUnique<system_logs::SingleLogFileLogSource>(
SingleLogFileLogSource::SupportedSource::kMessages);
case feedback_private::LOG_SOURCE_UILATEST:
return base::MakeUnique<system_logs::SingleLogFileLogSource>(
SingleLogFileLogSource::SupportedSource::kUiLatest);
case feedback_private::LOG_SOURCE_NONE:
default:
NOTREACHED() << "Unknown log source type.";
break;
}
return std::unique_ptr<SystemLogsSource>(nullptr);
} }
// static // static
......
...@@ -8,22 +8,23 @@ ...@@ -8,22 +8,23 @@
#include <memory> #include <memory>
#include "base/callback.h" #include "base/callback.h"
#include "chrome/browser/chromeos/system_logs/single_log_source.h" #include "chrome/browser/feedback/system_logs/system_logs_fetcher.h"
#include "chrome/common/extensions/api/feedback_private.h"
namespace extensions { namespace extensions {
// Provides a way to override the creation of a new SingleLogSource during // Provides a way to override the creation of a new Single*LogSource during
// testing. // testing.
class SingleLogSourceFactory { class SingleLogSourceFactory {
public: public:
using CreateCallback = using CreateCallback =
base::Callback<std::unique_ptr<system_logs::SingleLogSource>( base::Callback<std::unique_ptr<system_logs::SystemLogsSource>(
system_logs::SingleLogSource::SupportedSource)>; api::feedback_private::LogSource)>;
// Returns a SingleLogSource with source type of |type|. The caller must take // Returns a Single*LogSource with source type corresponding to |type|. The
// ownership of the returned object. // caller must takeownership of the returned object.
static std::unique_ptr<system_logs::SingleLogSource> CreateSingleLogSource( static std::unique_ptr<system_logs::SystemLogsSource> CreateSingleLogSource(
system_logs::SingleLogSource::SupportedSource type); api::feedback_private::LogSource type);
// Pass in a callback that gets executed instead of the default behavior of // Pass in a callback that gets executed instead of the default behavior of
// CreateSingleLogSource. Does not take ownership of |callback|. When done // CreateSingleLogSource. Does not take ownership of |callback|. When done
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment