save_page_handler.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Copyright (c) 2015 GitHub, Inc.
  2. // Use of this source code is governed by the MIT license that can be
  3. // found in the LICENSE file.
  4. #ifndef SHELL_BROWSER_API_SAVE_PAGE_HANDLER_H_
  5. #define SHELL_BROWSER_API_SAVE_PAGE_HANDLER_H_
  6. #include "components/download/public/common/download_item.h"
  7. #include "content/public/browser/download_manager.h"
  8. #include "content/public/browser/save_page_type.h"
  9. #include "shell/common/gin_helper/promise.h"
  10. #include "v8/include/v8.h"
  11. namespace base {
  12. class FilePath;
  13. }
  14. namespace content {
  15. class WebContents;
  16. }
  17. namespace electron {
  18. namespace api {
  19. // A self-destroyed class for handling save page request.
  20. class SavePageHandler : public content::DownloadManager::Observer,
  21. public download::DownloadItem::Observer {
  22. public:
  23. SavePageHandler(content::WebContents* web_contents,
  24. gin_helper::Promise<void> promise);
  25. ~SavePageHandler() override;
  26. bool Handle(const base::FilePath& full_path,
  27. const content::SavePageType& save_type);
  28. private:
  29. void Destroy(download::DownloadItem* item);
  30. // content::DownloadManager::Observer:
  31. void OnDownloadCreated(content::DownloadManager* manager,
  32. download::DownloadItem* item) override;
  33. // download::DownloadItem::Observer:
  34. void OnDownloadUpdated(download::DownloadItem* item) override;
  35. content::WebContents* web_contents_; // weak
  36. gin_helper::Promise<void> promise_;
  37. };
  38. } // namespace api
  39. } // namespace electron
  40. #endif // SHELL_BROWSER_API_SAVE_PAGE_HANDLER_H_