Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(455)

Side by Side Diff: content/browser/download/mhtml_generation_manager.cc

Issue 9566001: Hide MHTMLGenerationManager from chrome. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 4
5 #include "content/browser/download/mhtml_generation_manager.h" 5 #include "content/browser/download/mhtml_generation_manager.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/platform_file.h" 8 #include "base/platform_file.h"
9 #include "content/browser/renderer_host/render_process_host_impl.h" 9 #include "content/browser/renderer_host/render_process_host_impl.h"
10 #include "content/browser/renderer_host/render_view_host.h" 10 #include "content/browser/renderer_host/render_view_host.h"
11 #include "content/public/browser/browser_thread.h"
11 #include "content/public/browser/notification_service.h" 12 #include "content/public/browser/notification_service.h"
12 #include "content/public/browser/web_contents.h" 13 #include "content/public/browser/web_contents.h"
13 #include "content/common/view_messages.h" 14 #include "content/common/view_messages.h"
14 #include "content/public/browser/notification_types.h" 15 #include "content/public/browser/notification_types.h"
15 16
16 using content::BrowserThread; 17 using content::BrowserThread;
17 using content::WebContents; 18 using content::WebContents;
18 19
19 MHTMLGenerationManager::Job::Job() 20 MHTMLGenerationManager::Job::Job()
20 : browser_file(base::kInvalidPlatformFileValue), 21 : browser_file(base::kInvalidPlatformFileValue),
21 renderer_file(IPC::InvalidPlatformFileForTransit()), 22 renderer_file(IPC::InvalidPlatformFileForTransit()),
22 process_id(-1), 23 process_id(-1),
23 routing_id(-1) { 24 routing_id(-1) {
24 } 25 }
25 26
26 MHTMLGenerationManager::Job::~Job() { 27 MHTMLGenerationManager::Job::~Job() {
27 } 28 }
28 29
30 MHTMLGenerationManager* MHTMLGenerationManager::GetInstance() {
31 return Singleton<MHTMLGenerationManager>::get();
32 }
33
29 MHTMLGenerationManager::MHTMLGenerationManager() { 34 MHTMLGenerationManager::MHTMLGenerationManager() {
30 } 35 }
31 36
32 MHTMLGenerationManager::~MHTMLGenerationManager() { 37 MHTMLGenerationManager::~MHTMLGenerationManager() {
33 } 38 }
34 39
35 void MHTMLGenerationManager::GenerateMHTML(WebContents* web_contents, 40 void MHTMLGenerationManager::GenerateMHTML(
41 WebContents* web_contents,
36 const FilePath& file, 42 const FilePath& file,
37 const GenerateMHTMLCallback& callback) { 43 const GenerateMHTMLCallback& callback) {
38 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 44 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
39 static int id_counter = 0; 45 static int id_counter = 0;
40 46
41 int job_id = id_counter++; 47 int job_id = id_counter++;
42 Job job; 48 Job job;
43 job.file_path = file; 49 job.file_path = file;
44 job.process_id = web_contents->GetRenderProcessHost()->GetID(); 50 job.process_id = web_contents->GetRenderProcessHost()->GetID();
45 job.routing_id = web_contents->GetRenderViewHost()->routing_id(); 51 job.routing_id = web_contents->GetRenderViewHost()->routing_id();
46 job.callback = callback; 52 job.callback = callback;
47 id_to_job_[job_id] = job; 53 id_to_job_[job_id] = job;
48 54
49 base::ProcessHandle renderer_process = 55 base::ProcessHandle renderer_process =
50 web_contents->GetRenderProcessHost()->GetHandle(); 56 web_contents->GetRenderProcessHost()->GetHandle();
51 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, 57 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
52 base::Bind(&MHTMLGenerationManager::CreateFile, this, 58 base::Bind(&MHTMLGenerationManager::CreateFile, base::Unretained(this),
53 job_id, file, renderer_process)); 59 job_id, file, renderer_process));
54 } 60 }
55 61
56 void MHTMLGenerationManager::MHTMLGenerated(int job_id, int64 mhtml_data_size) { 62 void MHTMLGenerationManager::MHTMLGenerated(int job_id, int64 mhtml_data_size) {
57 JobFinished(job_id, mhtml_data_size); 63 JobFinished(job_id, mhtml_data_size);
58 } 64 }
59 65
60 void MHTMLGenerationManager::CreateFile(int job_id, const FilePath& file_path, 66 void MHTMLGenerationManager::CreateFile(
67 int job_id, const FilePath& file_path,
61 base::ProcessHandle renderer_process) { 68 base::ProcessHandle renderer_process) {
62 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 69 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
63 base::PlatformFile browser_file = base::CreatePlatformFile(file_path, 70 base::PlatformFile browser_file = base::CreatePlatformFile(file_path,
64 base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_WRITE, 71 base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_WRITE,
65 NULL, NULL); 72 NULL, NULL);
66 if (browser_file == base::kInvalidPlatformFileValue) { 73 if (browser_file == base::kInvalidPlatformFileValue) {
67 LOG(ERROR) << "Failed to create file to save MHTML at: " << 74 LOG(ERROR) << "Failed to create file to save MHTML at: " <<
68 file_path.value(); 75 file_path.value();
69 } 76 }
70 77
71 IPC::PlatformFileForTransit renderer_file = 78 IPC::PlatformFileForTransit renderer_file =
72 IPC::GetFileHandleForProcess(browser_file, renderer_process, false); 79 IPC::GetFileHandleForProcess(browser_file, renderer_process, false);
73 80
74 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 81 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
75 base::Bind(&MHTMLGenerationManager::FileCreated, this, 82 base::Bind(&MHTMLGenerationManager::FileCreated, base::Unretained(this),
76 job_id, browser_file, renderer_file)); 83 job_id, browser_file, renderer_file));
77 } 84 }
78 85
79 void MHTMLGenerationManager::FileCreated(int job_id, 86 void MHTMLGenerationManager::FileCreated(int job_id,
80 base::PlatformFile browser_file, 87 base::PlatformFile browser_file,
81 IPC::PlatformFileForTransit renderer_file) { 88 IPC::PlatformFileForTransit renderer_file) {
82 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 89 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
83 if (browser_file == base::kInvalidPlatformFileValue) { 90 if (browser_file == base::kInvalidPlatformFileValue) {
84 LOG(ERROR) << "Failed to create file"; 91 LOG(ERROR) << "Failed to create file";
85 JobFinished(job_id, -1); 92 JobFinished(job_id, -1);
(...skipping 25 matching lines...) Expand all
111 IDToJobMap::iterator iter = id_to_job_.find(job_id); 118 IDToJobMap::iterator iter = id_to_job_.find(job_id);
112 if (iter == id_to_job_.end()) { 119 if (iter == id_to_job_.end()) {
113 NOTREACHED(); 120 NOTREACHED();
114 return; 121 return;
115 } 122 }
116 123
117 Job& job = iter->second; 124 Job& job = iter->second;
118 job.callback.Run(job.file_path, file_size); 125 job.callback.Run(job.file_path, file_size);
119 126
120 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, 127 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
121 base::Bind(&MHTMLGenerationManager::CloseFile, this, job.browser_file)); 128 base::Bind(&MHTMLGenerationManager::CloseFile, base::Unretained(this),
129 job.browser_file));
122 130
123 id_to_job_.erase(job_id); 131 id_to_job_.erase(job_id);
124 } 132 }
125 133
126 void MHTMLGenerationManager::CloseFile(base::PlatformFile file) { 134 void MHTMLGenerationManager::CloseFile(base::PlatformFile file) {
127 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 135 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
128 base::ClosePlatformFile(file); 136 base::ClosePlatformFile(file);
129 } 137 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698