// Copyright (c) 2011 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. #ifndef CHROME_BROWSER_CHROMEOS_CROS_SYSLOGS_LIBRARY_H_ #define CHROME_BROWSER_CHROMEOS_CROS_SYSLOGS_LIBRARY_H_ #pragma once #include "base/memory/singleton.h" #include "content/browser/cancelable_request.h" #include "third_party/cros/chromeos_syslogs.h" class CancelableRequestConsumerBase; namespace chromeos { // This interface defines interaction with the ChromeOS syslogs APIs. class SyslogsLibrary : public CancelableRequestProvider { public: typedef Callback2<LogDictionaryType*, std::string*>::Type ReadCompleteCallback; SyslogsLibrary() {} virtual ~SyslogsLibrary() {} // Request system logs. Read happens on the FILE thread and callback is // called on the thread this is called from (via ForwardResult). // Logs are owned by callback function (use delete when done with them). // Returns the request handle. Call CancelRequest(Handle) to cancel // the request before the callback gets called. virtual Handle RequestSyslogs( bool compress_logs, bool feedback_context, CancelableRequestConsumerBase* consumer, ReadCompleteCallback* callback) = 0; // Factory function, creates a new instance and returns ownership. // For normal usage, access the singleton via CrosLibrary::Get(). static SyslogsLibrary* GetImpl(bool stub); }; } // namespace chromeos #endif // CHROME_BROWSER_CHROMEOS_CROS_SYSLOGS_LIBRARY_H_