// 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 CONTENT_RENDERER_MHTML_GENERATOR_H_
#define CONTENT_RENDERER_MHTML_GENERATOR_H_

#include "base/files/file.h"
#include "content/public/renderer/render_view_observer.h"
#include "ipc/ipc_platform_file.h"

namespace content {
class RenderViewImpl;

class MHTMLGenerator : public RenderViewObserver {
 public:
  explicit MHTMLGenerator(RenderViewImpl* render_view);
  ~MHTMLGenerator() override;

 private:
  // RenderViewObserver implementation:
  bool OnMessageReceived(const IPC::Message& message) override;

  void OnSavePageAsMHTML(int job_id,
                         IPC::PlatformFileForTransit file_for_transit);

  void NotifyBrowser(int job_id, int64 data_size);
  // Returns the size of the generated MHTML, -1 if it failed.
  int64 GenerateMHTML();

  base::File file_;

  DISALLOW_COPY_AND_ASSIGN(MHTMLGenerator);
};

}  // namespace content

#endif  // CONTENT_RENDERER_MHTML_GENERATOR_H_
