| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chrome/browser/printing/pwg_raster_converter.h" | 5 #include "chrome/browser/printing/pwg_raster_converter.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 const PWGRasterConverter::ResultCallback& callback); | 123 const PWGRasterConverter::ResultCallback& callback); |
| 124 | 124 |
| 125 // UtilityProcessHostClient implementation. | 125 // UtilityProcessHostClient implementation. |
| 126 void OnProcessCrashed(int exit_code) override; | 126 void OnProcessCrashed(int exit_code) override; |
| 127 bool OnMessageReceived(const IPC::Message& message) override; | 127 bool OnMessageReceived(const IPC::Message& message) override; |
| 128 | 128 |
| 129 private: | 129 private: |
| 130 ~PwgUtilityProcessHostClient() override; | 130 ~PwgUtilityProcessHostClient() override; |
| 131 | 131 |
| 132 // Message handlers. | 132 // Message handlers. |
| 133 void OnProcessStarted(); | |
| 134 void OnSucceeded(); | 133 void OnSucceeded(); |
| 135 void OnFailed(); | 134 void OnFailed(); |
| 136 | 135 |
| 137 void RunCallback(bool success); | 136 void RunCallback(bool success); |
| 138 | 137 |
| 139 void StartProcessOnIOThread(); | 138 void StartProcessOnIOThread(); |
| 140 | 139 |
| 141 void RunCallbackOnUIThread(bool success); | 140 void RunCallbackOnUIThread(bool success); |
| 142 void OnFilesReadyOnUIThread(); | 141 void OnFilesReadyOnUIThread(); |
| 143 | 142 |
| 144 std::unique_ptr<FileHandlers, BrowserThread::DeleteOnFileThread> files_; | 143 std::unique_ptr<FileHandlers, BrowserThread::DeleteOnFileThread> files_; |
| 145 PdfRenderSettings settings_; | 144 PdfRenderSettings settings_; |
| 146 PwgRasterSettings bitmap_settings_; | 145 PwgRasterSettings bitmap_settings_; |
| 147 PWGRasterConverter::ResultCallback callback_; | 146 PWGRasterConverter::ResultCallback callback_; |
| 148 base::WeakPtr<content::UtilityProcessHost> utility_process_host_; | |
| 149 | 147 |
| 150 DISALLOW_COPY_AND_ASSIGN(PwgUtilityProcessHostClient); | 148 DISALLOW_COPY_AND_ASSIGN(PwgUtilityProcessHostClient); |
| 151 }; | 149 }; |
| 152 | 150 |
| 153 PwgUtilityProcessHostClient::PwgUtilityProcessHostClient( | 151 PwgUtilityProcessHostClient::PwgUtilityProcessHostClient( |
| 154 const printing::PdfRenderSettings& settings, | 152 const printing::PdfRenderSettings& settings, |
| 155 const printing::PwgRasterSettings& bitmap_settings) | 153 const printing::PwgRasterSettings& bitmap_settings) |
| 156 : settings_(settings), bitmap_settings_(bitmap_settings) {} | 154 : settings_(settings), bitmap_settings_(bitmap_settings) {} |
| 157 | 155 |
| 158 PwgUtilityProcessHostClient::~PwgUtilityProcessHostClient() { | 156 PwgUtilityProcessHostClient::~PwgUtilityProcessHostClient() { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 173 } | 171 } |
| 174 | 172 |
| 175 void PwgUtilityProcessHostClient::OnProcessCrashed(int exit_code) { | 173 void PwgUtilityProcessHostClient::OnProcessCrashed(int exit_code) { |
| 176 OnFailed(); | 174 OnFailed(); |
| 177 } | 175 } |
| 178 | 176 |
| 179 bool PwgUtilityProcessHostClient::OnMessageReceived( | 177 bool PwgUtilityProcessHostClient::OnMessageReceived( |
| 180 const IPC::Message& message) { | 178 const IPC::Message& message) { |
| 181 bool handled = true; | 179 bool handled = true; |
| 182 IPC_BEGIN_MESSAGE_MAP(PwgUtilityProcessHostClient, message) | 180 IPC_BEGIN_MESSAGE_MAP(PwgUtilityProcessHostClient, message) |
| 183 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ProcessStarted, OnProcessStarted) | |
| 184 IPC_MESSAGE_HANDLER( | 181 IPC_MESSAGE_HANDLER( |
| 185 ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Succeeded, OnSucceeded) | 182 ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Succeeded, OnSucceeded) |
| 186 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Failed, | 183 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Failed, |
| 187 OnFailed) | 184 OnFailed) |
| 188 IPC_MESSAGE_UNHANDLED(handled = false) | 185 IPC_MESSAGE_UNHANDLED(handled = false) |
| 189 IPC_END_MESSAGE_MAP() | 186 IPC_END_MESSAGE_MAP() |
| 190 return handled; | 187 return handled; |
| 191 } | 188 } |
| 192 | 189 |
| 193 void PwgUtilityProcessHostClient::OnProcessStarted() { | |
| 194 DCHECK_CURRENTLY_ON(BrowserThread::IO); | |
| 195 if (!utility_process_host_) { | |
| 196 RunCallbackOnUIThread(false); | |
| 197 return; | |
| 198 } | |
| 199 | |
| 200 utility_process_host_->Send(new ChromeUtilityMsg_RenderPDFPagesToPWGRaster( | |
| 201 files_->GetPdfForProcess(), settings_, bitmap_settings_, | |
| 202 files_->GetPwgForProcess())); | |
| 203 utility_process_host_.reset(); | |
| 204 } | |
| 205 | |
| 206 void PwgUtilityProcessHostClient::OnSucceeded() { | 190 void PwgUtilityProcessHostClient::OnSucceeded() { |
| 207 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 191 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 208 RunCallback(true); | 192 RunCallback(true); |
| 209 } | 193 } |
| 210 | 194 |
| 211 void PwgUtilityProcessHostClient::OnFailed() { | 195 void PwgUtilityProcessHostClient::OnFailed() { |
| 212 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 196 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 213 RunCallback(false); | 197 RunCallback(false); |
| 214 } | 198 } |
| 215 | 199 |
| 216 void PwgUtilityProcessHostClient::OnFilesReadyOnUIThread() { | 200 void PwgUtilityProcessHostClient::OnFilesReadyOnUIThread() { |
| 217 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 201 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 218 if (!files_->IsValid()) { | 202 if (!files_->IsValid()) { |
| 219 RunCallbackOnUIThread(false); | 203 RunCallbackOnUIThread(false); |
| 220 return; | 204 return; |
| 221 } | 205 } |
| 222 BrowserThread::PostTask( | 206 BrowserThread::PostTask( |
| 223 BrowserThread::IO, FROM_HERE, | 207 BrowserThread::IO, FROM_HERE, |
| 224 base::Bind(&PwgUtilityProcessHostClient::StartProcessOnIOThread, this)); | 208 base::Bind(&PwgUtilityProcessHostClient::StartProcessOnIOThread, this)); |
| 225 } | 209 } |
| 226 | 210 |
| 227 void PwgUtilityProcessHostClient::StartProcessOnIOThread() { | 211 void PwgUtilityProcessHostClient::StartProcessOnIOThread() { |
| 228 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 212 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 229 utility_process_host_ = | 213 content::UtilityProcessHost* utility_process_host = |
| 230 content::UtilityProcessHost::Create( | 214 content::UtilityProcessHost::Create( |
| 231 this, base::MessageLoop::current()->task_runner())->AsWeakPtr(); | 215 this, base::MessageLoop::current()->task_runner()); |
| 232 utility_process_host_->SetName(l10n_util::GetStringUTF16( | 216 utility_process_host->SetName(l10n_util::GetStringUTF16( |
| 233 IDS_UTILITY_PROCESS_PWG_RASTER_CONVERTOR_NAME)); | 217 IDS_UTILITY_PROCESS_PWG_RASTER_CONVERTOR_NAME)); |
| 234 utility_process_host_->Send(new ChromeUtilityMsg_StartupPing); | 218 utility_process_host->Send(new ChromeUtilityMsg_RenderPDFPagesToPWGRaster( |
| 219 files_->GetPdfForProcess(), settings_, bitmap_settings_, |
| 220 files_->GetPwgForProcess())); |
| 235 } | 221 } |
| 236 | 222 |
| 237 void PwgUtilityProcessHostClient::RunCallback(bool success) { | 223 void PwgUtilityProcessHostClient::RunCallback(bool success) { |
| 238 BrowserThread::PostTask( | 224 BrowserThread::PostTask( |
| 239 BrowserThread::UI, FROM_HERE, | 225 BrowserThread::UI, FROM_HERE, |
| 240 base::Bind(&PwgUtilityProcessHostClient::RunCallbackOnUIThread, this, | 226 base::Bind(&PwgUtilityProcessHostClient::RunCallbackOnUIThread, this, |
| 241 success)); | 227 success)); |
| 242 } | 228 } |
| 243 | 229 |
| 244 void PwgUtilityProcessHostClient::RunCallbackOnUIThread(bool success) { | 230 void PwgUtilityProcessHostClient::RunCallbackOnUIThread(bool success) { |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 } | 341 } |
| 356 } | 342 } |
| 357 | 343 |
| 358 result.rotate_all_pages = raster_capability.value().rotate_all_pages; | 344 result.rotate_all_pages = raster_capability.value().rotate_all_pages; |
| 359 | 345 |
| 360 result.reverse_page_order = raster_capability.value().reverse_order_streaming; | 346 result.reverse_page_order = raster_capability.value().reverse_order_streaming; |
| 361 return result; | 347 return result; |
| 362 } | 348 } |
| 363 | 349 |
| 364 } // namespace printing | 350 } // namespace printing |
| OLD | NEW |