pdf_viewer_ui.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // Copyright (c) 2017 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 ATOM_BROWSER_UI_WEBUI_PDF_VIEWER_UI_H_
  5. #define ATOM_BROWSER_UI_WEBUI_PDF_VIEWER_UI_H_
  6. #include <memory>
  7. #include <string>
  8. #include "base/macros.h"
  9. #include "content/public/browser/web_contents_observer.h"
  10. #include "content/public/browser/web_ui_controller.h"
  11. #include "ipc/ipc_message.h"
  12. namespace content {
  13. class BrowserContext;
  14. struct StreamInfo;
  15. } // namespace content
  16. namespace atom {
  17. class PdfViewerHandler;
  18. class PdfViewerUI : public content::WebUIController,
  19. public content::WebContentsObserver {
  20. public:
  21. PdfViewerUI(content::BrowserContext* browser_context,
  22. content::WebUI* web_ui,
  23. const std::string& src);
  24. ~PdfViewerUI() override;
  25. // content::WebContentsObserver:
  26. bool OnMessageReceived(const IPC::Message& message,
  27. content::RenderFrameHost* render_frame_host) override;
  28. void RenderFrameCreated(content::RenderFrameHost* rfh) override;
  29. private:
  30. using StreamResponseCallback =
  31. base::OnceCallback<void(std::unique_ptr<content::StreamInfo>)>;
  32. class ResourceRequester;
  33. void OnPdfStreamCreated(std::unique_ptr<content::StreamInfo> stream_info);
  34. void OnSaveURLAs(const GURL& url, const content::Referrer& referrer);
  35. // Source URL from where the PDF originates.
  36. std::string src_;
  37. PdfViewerHandler* pdf_handler_;
  38. scoped_refptr<ResourceRequester> resource_requester_;
  39. // Pdf Resource stream.
  40. std::unique_ptr<content::StreamInfo> stream_;
  41. DISALLOW_COPY_AND_ASSIGN(PdfViewerUI);
  42. };
  43. } // namespace atom
  44. #endif // ATOM_BROWSER_UI_WEBUI_PDF_VIEWER_UI_H_