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

Unified Diff: chrome/service/service_utility_process_host.h

Issue 566693002: Use file handles to interact with utility process. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mon Sep 15 03:22:54 PDT 2014 Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/service/service_utility_process_host.h
diff --git a/chrome/service/service_utility_process_host.h b/chrome/service/service_utility_process_host.h
index 9ad97ddb4498888157de3684c69b6c5619d9407b..7c83b59dfb6aa23dfda4cdbd98e7e85051c9cc77 100644
--- a/chrome/service/service_utility_process_host.h
+++ b/chrome/service/service_utility_process_host.h
@@ -7,20 +7,16 @@
#include "build/build_config.h"
-#include <string>
-#include <vector>
-
-#include "base/basictypes.h"
-#include "base/files/file_path.h"
#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
#include "base/memory/scoped_ptr.h"
-#include "base/process/process.h"
#include "content/public/common/child_process_host_delegate.h"
-#include "ipc/ipc_channel.h"
-#include "printing/pdf_render_settings.h"
+#include "ipc/ipc_platform_file.h"
namespace base {
class CommandLine;
+class File;
+class FilePath;
class MessageLoopProxy;
class ScopedTempDir;
} // namespace base
@@ -31,6 +27,7 @@ class ChildProcessHost;
namespace printing {
class MetafilePlayer;
+class PdfRenderSettings;
struct PageRange;
struct PrinterCapsAndDefaults;
struct PrinterSemanticCapsAndDefaults;
@@ -51,13 +48,13 @@ class ServiceUtilityProcessHost : public content::ChildProcessHostDelegate {
// Called when the child process died before a reply was receieved.
virtual void OnChildDied() {}
- // Called when at least one page in the specified PDF has been rendered
- // successfully into |metafile|.
- virtual void OnRenderPDFPagesToMetafileSucceeded(
- const printing::MetafilePlayer& metafile,
- int highest_rendered_page_number,
- double scale_factor) {}
- // Called when no page in the passed in PDF could be rendered.
+ virtual void OnRenderPDFPagesToMetafilePageDone(
+ double scale_factor,
+ const printing::MetafilePlayer& emf) {}
+
+ // Called when at all pages in the PDF has been rendered successfully.
+ virtual void OnRenderPDFPagesToMetafileSucceeded() {}
+ // Called when at least one page in PDF could be rendered.
virtual void OnRenderPDFPagesToMetafileFailed() {}
// Called when the printer capabilities and defaults have been
@@ -82,9 +79,7 @@ class ServiceUtilityProcessHost : public content::ChildProcessHostDelegate {
friend class ServiceUtilityProcessHost;
// Invoked when a metafile file is ready.
- void MetafileAvailable(const base::FilePath& metafile_path,
- int highest_rendered_page_number,
- double scale_factor);
+ void MetafileAvailable(double scale_factor, base::File file);
DISALLOW_COPY_AND_ASSIGN(Client);
};
@@ -98,8 +93,7 @@ class ServiceUtilityProcessHost : public content::ChildProcessHostDelegate {
// pages than the specified page ranges, it will render as many as available.
bool StartRenderPDFPagesToMetafile(
const base::FilePath& pdf_path,
- const printing::PdfRenderSettings& render_settings,
- const std::vector<printing::PageRange>& page_ranges);
+ const printing::PdfRenderSettings& render_settings);
// Starts a process to get capabilities and defaults for the specified
// printer. Used on Windows to isolate the service process from printer driver
@@ -113,6 +107,8 @@ class ServiceUtilityProcessHost : public content::ChildProcessHostDelegate {
// in a sandbox. Returns result as printing::PrinterSemanticCapsAndDefaults.
bool StartGetPrinterSemanticCapsAndDefaults(const std::string& printer_name);
+ bool Send(IPC::Message* msg);
+
protected:
// Allows this method to be overridden for tests.
virtual base::FilePath GetUtilityProcessCmd();
@@ -123,26 +119,21 @@ class ServiceUtilityProcessHost : public content::ChildProcessHostDelegate {
virtual base::ProcessHandle GetHandle() const OVERRIDE;
private:
- // Starts a process. Returns true iff it succeeded. |exposed_dir| is the
- // path to the exposed to the sandbox. This is ignored if |no_sandbox| is
- // true.
- bool StartProcess(bool no_sandbox, const base::FilePath& exposed_dir);
+ // Starts a process. Returns true iff it succeeded.
+ bool StartProcess(bool no_sandbox);
// Launch the child process synchronously.
- // TODO(sanjeevr): Determine whether we need to make the launch asynchronous.
- // |exposed_dir| is the path to tbe exposed to the sandbox. This is ignored
- // if |no_sandbox| is true.
- bool Launch(base::CommandLine* cmd_line,
- bool no_sandbox,
- const base::FilePath& exposed_dir);
+ bool Launch(base::CommandLine* cmd_line, bool no_sandbox);
base::ProcessHandle handle() const { return handle_; }
+ void OnMetafileSpooled();
+ /*void ReplayCreateFileIfReady();
Lei Zhang 2014/09/15 21:49:53 dead code? (and in .cc file)
Vitaly Buka (NO REVIEWS) 2014/09/15 22:33:50 As I wrote before this part is not updated from pa
+ void FailReplyOnCreate();*/
+
// Messages handlers:
- void OnRenderPDFPagesToMetafilesSucceeded(
- const std::vector<printing::PageRange>& page_ranges,
- double scale_factor);
- void OnRenderPDFPagesToMetafileFailed();
+ void OnRenderPDFPagesToMetafilesPageCount(int page_count) {};
Lei Zhang 2014/09/15 21:49:53 Don't you need the page count so you know how many
Vitaly Buka (NO REVIEWS) 2014/09/15 22:33:50 ditto On 2014/09/15 21:49:53, Lei Zhang wrote:
+ void OnRenderPDFPagesToMetafilesPageDone(bool success, double scale_factor);
void OnGetPrinterCapsAndDefaultsSucceeded(
const std::string& printer_name,
const printing::PrinterCapsAndDefaults& caps_and_defaults);
@@ -159,13 +150,22 @@ class ServiceUtilityProcessHost : public content::ChildProcessHostDelegate {
scoped_refptr<Client> client_;
scoped_refptr<base::MessageLoopProxy> client_message_loop_proxy_;
bool waiting_for_reply_;
- // The base path to the temp file where the metafile will be written to.
- base::FilePath metafile_path_;
- // The temporary folder created for the metafile.
- scoped_ptr<base::ScopedTempDir> scratch_metafile_dir_;
+
// Start time of operation.
base::Time start_time_;
+ // Output file for current page converted by utility process.
+ base::File emf_file_;
+
+ // Delayed reply for on request for new output file by utility process.
+ // We want to delay conversion if client is not fast enough.
+ IPC::Message* create_file_reply_msg_;
+
+ // Number in-progress files sent to client.
+ int number_of_emf_in_progress_;
+
+ base::WeakPtrFactory<ServiceUtilityProcessHost> weak_ptr_factory_;
+
DISALLOW_COPY_AND_ASSIGN(ServiceUtilityProcessHost);
};

Powered by Google App Engine
This is Rietveld 408576698