"getInitialZoom",
base::Bind(&PdfViewerHandler::GetInitialZoom, base::Unretained(this)));
web_ui()->RegisterMessageCallback(
+ "setZoom",
+ base::Bind(&PdfViewerHandler::SetZoom, base::Unretained(this)));
+ web_ui()->RegisterMessageCallback(
"getStrings",
base::Bind(&PdfViewerHandler::GetStrings, base::Unretained(this)));
web_ui()->RegisterMessageCallback(
base::FundamentalValue(content::ZoomLevelToZoomFactor(zoom_level)));
}
+void PdfViewerHandler::SetZoom(const base::ListValue* args) {
+ if (!IsJavascriptAllowed())
+ return;
+ CHECK_EQ(2U, args->GetSize());
+ const base::Value* callback_id;
+ CHECK(args->Get(0, &callback_id));
+ double zoom_level = 0.0;
+ CHECK(args->GetDouble(1, &zoom_level));
+
+ content::HostZoomMap::SetZoomLevel(web_ui()->GetWebContents(),
+ zoom_level);
+ ResolveJavascriptCallback(*callback_id, base::FundamentalValue(zoom_level));
+}
+
void PdfViewerHandler::GetStrings(const base::ListValue* args) {
if (!IsJavascriptAllowed())
return;
void PdfViewerHandler::OnZoomLevelChanged(
const content::HostZoomMap::ZoomLevelChange& change) {
- // TODO(deepak1556): This will work only if zoom level is changed through host
- // zoom map.
- if (change.scheme == content::kChromeUIScheme &&
- change.host == kPdfViewerUIHost) {
+ if (change.host == kPdfViewerUIHost) {
CallJavascriptFunction(
"cr.webUIListenerCallback", base::StringValue("onZoomLevelChanged"),
base::FundamentalValue(
void Initialize(const base::ListValue* args);
void GetDefaultZoom(const base::ListValue* args);
void GetInitialZoom(const base::ListValue* args);
+ void SetZoom(const base::ListValue* args);
void GetStrings(const base::ListValue* args);
void Reload(const base::ListValue* args);
void OnZoomLevelChanged(const content::HostZoomMap::ZoomLevelChange& change);
}
private:
- friend class base::RefCountedThreadSafe<ResourceRequester>;
friend struct BrowserThread::DeleteOnThread<BrowserThread::IO>;
friend class base::DeleteHelper<ResourceRequester>;
~ResourceRequester() override {}
void PdfViewerUI::OnPdfStreamCreated(
std::unique_ptr<content::StreamInfo> stream) {
stream_ = std::move(stream);
- pdf_handler_->SetPdfResourceStream(stream_.get());
+ if (pdf_handler_)
+ pdf_handler_->SetPdfResourceStream(stream_.get());
resource_requester_ = nullptr;
}