1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file.
4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#ifndef CHROME_BROWSER_CRASH_UPLOAD_LIST_WIN_H_
6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_BROWSER_CRASH_UPLOAD_LIST_WIN_H_
7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#pragma once
8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/crash_upload_list.h"
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/compiler_specific.h"
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// A CrashUploadList that retrieves the list of reported crashes
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// from the Windows Event Log.
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass CrashUploadListWin : public CrashUploadList {
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public:
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  explicit CrashUploadListWin(Delegate* delegate);
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen protected:
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Loads the list of crashes from the Windows Event Log.
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void LoadCrashList() OVERRIDE;
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private:
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Returns whether the event record is likely a Chrome crash log.
24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  bool IsPossibleCrashLogRecord(EVENTLOGRECORD* record) const;
25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Parses the event record and adds it to the crash list.
27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  void ProcessPossibleCrashLogRecord(EVENTLOGRECORD* record);
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  DISALLOW_COPY_AND_ASSIGN(CrashUploadListWin);
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen};
31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif  // CHROME_BROWSER_CRASH_UPLOAD_LIST_WIN_H_
33