propagate zoom changes to pdf plugin

This commit is contained in:
deepak1556 2017-03-01 22:41:51 +05:30
parent eda413861a
commit 4381e0895f
3 changed files with 21 additions and 6 deletions

View file

@ -82,6 +82,9 @@ void PdfViewerHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback(
"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)));
@ -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(

View file

@ -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);

View file

@ -185,7 +185,6 @@ class PdfViewerUI::ResourceRequester
}
private:
friend class base::RefCountedThreadSafe<ResourceRequester>;
friend struct BrowserThread::DeleteOnThread<BrowserThread::IO>;
friend class base::DeleteHelper<ResourceRequester>;
~ResourceRequester() override {}
@ -223,7 +222,8 @@ bool PdfViewerUI::OnMessageReceived(
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;
}