OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 #ifndef CONTENT_BROWSER_DOWNLOAD_MHTML_GENERATION_MANAGER_H_ | 4 #ifndef CONTENT_BROWSER_DOWNLOAD_MHTML_GENERATION_MANAGER_H_ |
5 #define CONTENT_BROWSER_DOWNLOAD_MHTML_GENERATION_MANAGER_H_ | 5 #define CONTENT_BROWSER_DOWNLOAD_MHTML_GENERATION_MANAGER_H_ |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <map> | 9 #include <map> |
10 #include <memory> | 10 #include <memory> |
11 #include <set> | 11 #include <set> |
12 #include <string> | 12 #include <string> |
13 | 13 |
14 #include "base/files/file.h" | 14 #include "base/files/file.h" |
15 #include "base/macros.h" | 15 #include "base/macros.h" |
16 #include "base/memory/singleton.h" | 16 #include "base/memory/singleton.h" |
17 #include "base/process/process.h" | 17 #include "base/process/process.h" |
| 18 #include "content/common/download/mhtml_save_status.h" |
18 #include "content/public/common/mhtml_generation_params.h" | 19 #include "content/public/common/mhtml_generation_params.h" |
19 #include "ipc/ipc_platform_file.h" | 20 #include "ipc/ipc_platform_file.h" |
20 | 21 |
21 namespace base { | 22 namespace base { |
22 class FilePath; | 23 class FilePath; |
23 } | 24 } |
24 | 25 |
25 namespace content { | 26 namespace content { |
26 | 27 |
27 class RenderFrameHostImpl; | 28 class RenderFrameHostImpl; |
(...skipping 18 matching lines...) Expand all Loading... |
46 // representation of the current page. | 47 // representation of the current page. |
47 void SaveMHTML(WebContents* web_contents, | 48 void SaveMHTML(WebContents* web_contents, |
48 const MHTMLGenerationParams& params, | 49 const MHTMLGenerationParams& params, |
49 const GenerateMHTMLCallback& callback); | 50 const GenerateMHTMLCallback& callback); |
50 | 51 |
51 // Handler for FrameHostMsg_SerializeAsMHTMLResponse (a notification from the | 52 // Handler for FrameHostMsg_SerializeAsMHTMLResponse (a notification from the |
52 // renderer that the MHTML generation finished for a single frame). | 53 // renderer that the MHTML generation finished for a single frame). |
53 void OnSerializeAsMHTMLResponse( | 54 void OnSerializeAsMHTMLResponse( |
54 RenderFrameHostImpl* sender, | 55 RenderFrameHostImpl* sender, |
55 int job_id, | 56 int job_id, |
56 bool mhtml_generation_in_renderer_succeeded, | 57 MhtmlSaveStatus save_status, |
57 const std::set<std::string>& digests_of_uris_of_serialized_resources, | 58 const std::set<std::string>& digests_of_uris_of_serialized_resources, |
58 base::TimeDelta renderer_main_thread_time); | 59 base::TimeDelta renderer_main_thread_time); |
59 | 60 |
60 private: | 61 private: |
61 friend struct base::DefaultSingletonTraits<MHTMLGenerationManager>; | 62 friend struct base::DefaultSingletonTraits<MHTMLGenerationManager>; |
62 class Job; | 63 class Job; |
63 enum class JobStatus { SUCCESS, FAILURE }; | |
64 | 64 |
65 MHTMLGenerationManager(); | 65 MHTMLGenerationManager(); |
66 virtual ~MHTMLGenerationManager(); | 66 virtual ~MHTMLGenerationManager(); |
67 | 67 |
68 // Called on the file thread to create |file|. | 68 // Called on the file thread to create |file|. |
69 static base::File CreateFile(const base::FilePath& file_path); | 69 static base::File CreateFile(const base::FilePath& file_path); |
70 | 70 |
71 // Called on the UI thread when the file that should hold the MHTML data has | 71 // Called on the UI thread when the file that should hold the MHTML data has |
72 // been created. | 72 // been created. |
73 void OnFileAvailable(int job_id, base::File browser_file); | 73 void OnFileAvailable(int job_id, base::File browser_file); |
74 | 74 |
75 // Called on the UI thread when a job has been finished. | 75 // Called on the UI thread when a job has been finished. |
76 void JobFinished(Job* job, JobStatus job_status); | 76 void JobFinished(Job* job, MhtmlSaveStatus save_status); |
77 | 77 |
78 // Called on the UI thread after the file got finalized and we have its size. | 78 // Called on the UI thread after the file got finalized and we have its size. |
79 void OnFileClosed(int job_id, JobStatus job_status, int64_t file_size); | 79 void OnFileClosed(int job_id, MhtmlSaveStatus save_status, int64_t file_size); |
80 | 80 |
81 // Creates and registers a new job. | 81 // Creates and registers a new job. |
82 Job* NewJob(WebContents* web_contents, | 82 Job* NewJob(WebContents* web_contents, |
83 const MHTMLGenerationParams& params, | 83 const MHTMLGenerationParams& params, |
84 const GenerateMHTMLCallback& callback); | 84 const GenerateMHTMLCallback& callback); |
85 | 85 |
86 // Finds job by id. Returns nullptr if no job with a given id was found. | 86 // Finds job by id. Returns nullptr if no job with a given id was found. |
87 Job* FindJob(int job_id); | 87 Job* FindJob(int job_id); |
88 | 88 |
89 // Called when the render process connected to a job exits. | 89 // Called when the render process connected to a job exits. |
90 void RenderProcessExited(Job* job); | 90 void RenderProcessExited(Job* job); |
91 | 91 |
92 std::map<int, std::unique_ptr<Job>> id_to_job_; | 92 std::map<int, std::unique_ptr<Job>> id_to_job_; |
93 | 93 |
94 int next_job_id_; | 94 int next_job_id_; |
95 | 95 |
96 DISALLOW_COPY_AND_ASSIGN(MHTMLGenerationManager); | 96 DISALLOW_COPY_AND_ASSIGN(MHTMLGenerationManager); |
97 }; | 97 }; |
98 | 98 |
99 } // namespace content | 99 } // namespace content |
100 | 100 |
101 #endif // CONTENT_BROWSER_DOWNLOAD_MHTML_GENERATION_MANAGER_H_ | 101 #endif // CONTENT_BROWSER_DOWNLOAD_MHTML_GENERATION_MANAGER_H_ |
OLD | NEW |