| Index: pdf/out_of_process_instance.cc | 
| diff --git a/pdf/out_of_process_instance.cc b/pdf/out_of_process_instance.cc | 
| index 6a3a5181974977defb78713bc667e9171dd491f1..3d7ff27e092d188c59d074ee0ed30dc820397a8d 100644 | 
| --- a/pdf/out_of_process_instance.cc | 
| +++ b/pdf/out_of_process_instance.cc | 
| @@ -85,6 +85,8 @@ const char kJSGetPasswordCompleteType[] = "getPasswordComplete"; | 
| const char kJSPassword[] = "password"; | 
| // Print (Page -> Plugin) | 
| const char kJSPrintType[] = "print"; | 
| +// Save (Page -> Plugin) | 
| +const char kJSSaveType[] = "save"; | 
| // Go to page (Plugin -> Page) | 
| const char kJSGoToPageType[] = "goToPage"; | 
| const char kJSPageNumber[] = "page"; | 
| @@ -375,6 +377,9 @@ void OutOfProcessInstance::HandleMessage(const pp::Var& message) { | 
| } | 
| } else if (type == kJSPrintType) { | 
| Print(); | 
| +  } else if (type == kJSSaveType) { | 
| +    printf("url_: %s\n", url_.c_str()); | 
| +    pp::PDF::SaveAs(this, url_); | 
| } else if (type == kJSResetPrintPreviewModeType && | 
| dict.Get(pp::Var(kJSPrintPreviewUrl)).is_string() && | 
| dict.Get(pp::Var(kJSPrintPreviewGrayscale)).is_bool() && | 
|  |