Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(879)

Unified Diff: chrome/browser/extensions/api/log_private/log_private_api.h

Issue 329853010: Additional methods for chrome.logPrivate API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/log_private/log_private_api.h
diff --git a/chrome/browser/extensions/api/log_private/log_private_api.h b/chrome/browser/extensions/api/log_private/log_private_api.h
index 2b6648bcfdd88822b2915f3fb28a6d05e168267a..95181f9df6605414b15c33dc53c4626612772371 100644
--- a/chrome/browser/extensions/api/log_private/log_private_api.h
+++ b/chrome/browser/extensions/api/log_private/log_private_api.h
@@ -14,9 +14,14 @@
#include "chrome/browser/extensions/chrome_extension_function.h"
#include "chrome/browser/feedback/system_logs/about_system_logs_fetcher.h"
#include "chrome/common/extensions/api/log_private.h"
+#include "extensions/browser/api/api_resource.h"
+#include "extensions/browser/api/api_resource_manager.h"
#include "extensions/browser/browser_context_keyed_api_factory.h"
#include "extensions/browser/extension_registry_observer.h"
#include "net/base/net_log.h"
+#include "net/base/net_log_logger.h"
+
+class IOThread;
namespace content {
class BrowserContext;
@@ -25,6 +30,26 @@ class BrowserContext;
namespace extensions {
class ExtensionRegistry;
+// Tracked log files.
+class FileResource : public ApiResource {
+ public:
+ FileResource(const std::string& owner_extension_id,
+ const base::FilePath& path);
+ virtual ~FileResource();
+
+ // ApiResource overrides.
+ virtual bool IsPersistent() const OVERRIDE;
+
+ static const char kSequenceToken[];
+ static const base::SequencedWorkerPool::WorkerShutdown kShutdownBehavior =
+ base::SequencedWorkerPool::BLOCK_SHUTDOWN;
+
+ private:
+ base::FilePath path_;
+
+ DISALLOW_COPY_AND_ASSIGN(FileResource);
+};
+
class LogPrivateAPI : public BrowserContextKeyedAPI,
public ExtensionRegistryObserver,
public net::NetLog::ThreadSafeObserver {
@@ -35,8 +60,15 @@ class LogPrivateAPI : public BrowserContextKeyedAPI,
explicit LogPrivateAPI(content::BrowserContext* context);
virtual ~LogPrivateAPI();
- void StartNetInternalsWatch(const std::string& extension_id);
- void StopNetInternalsWatch(const std::string& extension_id);
+ void StartNetInternalsWatch(const std::string& extension_id,
+ api::log_private::EventSink event_sink,
+ const base::Closure& closure);
+ void StopNetInternalsWatch(const std::string& extension_id,
+ const base::Closure& closure);
+ void StopAllWatches(const std::string& extension_id,
+ const base::Closure& closure);
+ void RegisterTempFile(const std::string& owner_extension_id,
+ const base::FilePath& file_path);
// BrowserContextKeyedAPI implementation.
static BrowserContextKeyedAPIFactory<LogPrivateAPI>* GetFactoryInstance();
@@ -44,6 +76,7 @@ class LogPrivateAPI : public BrowserContextKeyedAPI,
private:
friend class BrowserContextKeyedAPIFactory<LogPrivateAPI>;
+ void Initialize();
// ExtensionRegistryObserver implementation.
virtual void OnExtensionUnloaded(
content::BrowserContext* browser_context,
@@ -56,8 +89,18 @@ class LogPrivateAPI : public BrowserContextKeyedAPI,
void PostPendingEntries();
void AddEntriesOnUI(scoped_ptr<base::ListValue> value);
- void MaybeStartNetInternalLogging();
- void MaybeStopNetInternalLogging();
+ // Initializes a new instance of net::NetLogLogger and passes it back via
+ // |net_logger| param.
+ void InitializeNetLogger(const std::string& owner_extension_id,
+ net::NetLogLogger** net_logger);
+
+ // Starts observing network events with a new |net_logger| instance.
+ void StartObservingNetEvents(IOThread* io_thread,
+ net::NetLogLogger** net_logger);
+ void MaybeStartNetInternalLogging(const std::string& caller_extension_id,
+ IOThread* io_thread,
+ api::log_private::EventSink event_sink);
+ void MaybeStopNetInternalLogging(const base::Closure& closure);
void StopNetInternalLogging();
// BrowserContextKeyedAPI implementation.
@@ -69,12 +112,18 @@ class LogPrivateAPI : public BrowserContextKeyedAPI,
content::BrowserContext* const browser_context_;
bool logging_net_internals_;
+ api::log_private::EventSink event_sink_;
std::set<std::string> net_internal_watches_;
scoped_ptr<base::ListValue> pending_entries_;
-
+ scoped_ptr<net::NetLogLogger> net_log_logger_;
// Listen to extension unloaded notifications.
ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
extension_registry_observer_;
+ ApiResourceManager<FileResource, WorkerPoolThreadTraits<FileResource> >
+ log_file_resources_;
+ bool initialized_;
+
+ DISALLOW_COPY_AND_ASSIGN(LogPrivateAPI);
};
class LogPrivateGetHistoricalFunction : public AsyncExtensionFunction {
@@ -95,34 +144,57 @@ class LogPrivateGetHistoricalFunction : public AsyncExtensionFunction {
DISALLOW_COPY_AND_ASSIGN(LogPrivateGetHistoricalFunction);
};
-class LogPrivateStartNetInternalsWatchFunction
- : public ChromeSyncExtensionFunction {
+class LogPrivateStartEventRecorderFunction : public AsyncExtensionFunction {
public:
- LogPrivateStartNetInternalsWatchFunction();
- DECLARE_EXTENSION_FUNCTION("logPrivate.startNetInternalsWatch",
- LOGPRIVATE_STARTNETINTERNALSWATCH);
+ LogPrivateStartEventRecorderFunction();
+ DECLARE_EXTENSION_FUNCTION("logPrivate.startEventRecorder",
+ LOGPRIVATE_STARTEVENTRECODER);
protected:
- virtual ~LogPrivateStartNetInternalsWatchFunction();
- virtual bool RunSync() OVERRIDE;
+ virtual ~LogPrivateStartEventRecorderFunction();
+ virtual bool RunAsync() OVERRIDE;
private:
- DISALLOW_COPY_AND_ASSIGN(LogPrivateStartNetInternalsWatchFunction);
+ void OnEventRecorderStarted();
+
+ DISALLOW_COPY_AND_ASSIGN(LogPrivateStartEventRecorderFunction);
};
-class LogPrivateStopNetInternalsWatchFunction
- : public ChromeSyncExtensionFunction {
+class LogPrivateStopEventRecorderFunction : public AsyncExtensionFunction {
public:
- LogPrivateStopNetInternalsWatchFunction();
- DECLARE_EXTENSION_FUNCTION("logPrivate.stopNetInternalsWatch",
- LOGPRIVATE_STOPNETINTERNALSWATCH);
+ LogPrivateStopEventRecorderFunction();
+ DECLARE_EXTENSION_FUNCTION("logPrivate.stopEventRecorder",
+ LOGPRIVATE_STOPEVENTRECODER);
protected:
- virtual ~LogPrivateStopNetInternalsWatchFunction();
- virtual bool RunSync() OVERRIDE;
+ virtual ~LogPrivateStopEventRecorderFunction();
+
+ // AsyncExtensionFunction overrides.
+ virtual bool RunAsync() OVERRIDE;
+
+ private:
+ void OnEventRecorderStopped();
+
+ DISALLOW_COPY_AND_ASSIGN(LogPrivateStopEventRecorderFunction);
+};
+
+class LogPrivateDumpLogsFunction : public AsyncExtensionFunction {
+ public:
+ LogPrivateDumpLogsFunction();
+ DECLARE_EXTENSION_FUNCTION("logPrivate.dumpLogs", LOGPRIVATE_DUMPLOGS);
+
+ protected:
+ virtual ~LogPrivateDumpLogsFunction();
+
+ // AsyncExtensionFunction overrides.
+ virtual bool RunAsync() OVERRIDE;
private:
- DISALLOW_COPY_AND_ASSIGN(LogPrivateStopNetInternalsWatchFunction);
+ // Callback for DebugLogWriter::StoreLogs() call.
+ void OnStoreLogsCompleted(const base::FilePath& log_path, bool succeeded);
+ // Callback for LogPrivateAPI::StopAllWatches() call.
+ void OnStopAllWatches();
+ DISALLOW_COPY_AND_ASSIGN(LogPrivateDumpLogsFunction);
};
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698