From 4381e0895f91f00fa67a77d2f37eb8146260b143 Mon Sep 17 00:00:00 2001 From: deepak1556 Date: Wed, 1 Mar 2017 22:41:51 +0530 Subject: [PATCH] propagate zoom changes to pdf plugin --- atom/browser/ui/webui/pdf_viewer_handler.cc | 22 ++++++++++++++++++---- atom/browser/ui/webui/pdf_viewer_handler.h | 1 + atom/browser/ui/webui/pdf_viewer_ui.cc | 4 ++-- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/atom/browser/ui/webui/pdf_viewer_handler.cc b/atom/browser/ui/webui/pdf_viewer_handler.cc index 6b23b93..c369e2d 100644 --- a/atom/browser/ui/webui/pdf_viewer_handler.cc +++ b/atom/browser/ui/webui/pdf_viewer_handler.cc @@ -83,6 +83,9 @@ void PdfViewerHandler::RegisterMessages() { "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( @@ -148,6 +151,20 @@ void PdfViewerHandler::GetInitialZoom(const base::ListValue* args) { 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; @@ -187,10 +204,7 @@ void PdfViewerHandler::Reload(const base::ListValue* args) { 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( diff --git a/atom/browser/ui/webui/pdf_viewer_handler.h b/atom/browser/ui/webui/pdf_viewer_handler.h index 74fd3ce..70274e3 100644 --- a/atom/browser/ui/webui/pdf_viewer_handler.h +++ b/atom/browser/ui/webui/pdf_viewer_handler.h @@ -38,6 +38,7 @@ class PdfViewerHandler : public content::WebUIMessageHandler { 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); diff --git a/atom/browser/ui/webui/pdf_viewer_ui.cc b/atom/browser/ui/webui/pdf_viewer_ui.cc index 0a8d95a..f233f91 100644 --- a/atom/browser/ui/webui/pdf_viewer_ui.cc +++ b/atom/browser/ui/webui/pdf_viewer_ui.cc @@ -185,7 +185,6 @@ class PdfViewerUI::ResourceRequester } private: - friend class base::RefCountedThreadSafe; friend struct BrowserThread::DeleteOnThread; friend class base::DeleteHelper; ~ResourceRequester() override {} @@ -223,7 +222,8 @@ bool PdfViewerUI::OnMessageReceived( void PdfViewerUI::OnPdfStreamCreated( std::unique_ptr stream) { stream_ = std::move(stream); - pdf_handler_->SetPdfResourceStream(stream_.get()); + if (pdf_handler_) + pdf_handler_->SetPdfResourceStream(stream_.get()); resource_requester_ = nullptr; } -- 2.7.4