New issue
Advanced search Search tips

Issue 675585 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Jan 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Plugin placeholder functionality is broken

Reported by oleg...@yandex-team.ru, Dec 19 2016

Issue description

UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.77 YaBrowser/17.1.0.1332 (beta) Yowser/2.5 Safari/537.36

Steps to reproduce the problem:
1. Start chrome.exe with command-line switch "--override-plugin-power-saver-for-testing=always"
2. Open some office document, e.g. http://www.williamspublishing.com/PDF/5-8459-0793-4/part.pdf

What is the expected behavior?
PDF document is loaded grayed with "Play" triangle overlay.

What went wrong?
Whole page is black.

Did this work before? Yes 

Chrome version: 55.0.2883.87  Channel: stable
OS Version: 6.1 (Windows 7, Windows Server 2008 R2)
Flash Version: Shockwave Flash 23.0 r0

This regression is caused by fix https://bugs.chromium.org/p/chromium/issues/detail?id=641028

Command-line switch "--override-plugin-power-saver-for-testing=always" switches execution in ChromeContentRendererClient::CreatePlugin to ChromePluginPlaceholder::CreateBlockedPlugin branch instead of immediate plugin creation.
 
Labels: M-55
Cc: kkaluri@chromium.org
Components: Internals>Plugins Internals>Plugins>PDF
Labels: -Pri-2 -M-55 hasbisect-per-revision M-57 ReleaseBlock-Stable OS-Linux OS-Mac Pri-1
Owner: japhet@chromium.org
Status: Assigned (was: Unconfirmed)
Able to reproduce this issue on windows 10, Ubuntu 14.04 and Mac 10.12.2 on chrome stable version 55.0.2883.87 and also in current canary version 57.0.2957.0. Issue broken in M55

Bisect Info:
===========

Good build : 55.0.2864.0,  Revision Range-419385
Bad build  : 55.0.2865.0,  Revision Range-419399

After executing the per-revision-bisect script, i got the following CL's between good and bad build versions
===========================================
https://chromium.googlesource.com/chromium/src/+log/4887d11ce42e16e77dafff724490072f2067d5b4..8ed4bf69eca5e2696aeab731a8e9a15e8f379f2b

The suspecting Change Log is :
-----------
https://chromium.googlesource.com/chromium/src/+/8ed4bf69eca5e2696aeab731a8e9a15e8f379f2b

From the above CL suspecting the below change
---------------------------
Review-Url: https://codereview.chromium.org/2349443003

japhet@- Could you please look into this issue, if it's related to your change?  if not could you please help us to reassign this issue to the right owner.


Project Member

Comment 3 by bugdroid1@chromium.org, Jan 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b08418cd6d5f472ca454216aab8fd06cf9a19a36

commit b08418cd6d5f472ca454216aab8fd06cf9a19a36
Author: japhet <japhet@chromium.org>
Date: Wed Jan 04 17:34:17 2017

Fix plugin placeholders not loading

I have made a truly wonderful mess of WebViewPlugin, via:
https://chromium.googlesource.com/chromium/src/+/8489f1bf78c2c6f296e0df6c529751d29e8a0188
https://chromium.googlesource.com/chromium/src/+/8ed4bf69eca5e2696aeab731a8e9a15e8f379f2b

My fundamental misunderstanding (I think!) was regarding what
WebViewPlugin is listening to via the various interfaces it subclasses.
It uses WebFrameClient and WebViewClient to observe its internal
WebView, while it uses WebPlugin and RenderViewObserver to interact
with the real external page. In the patches above, I mixed and matched
messages from those 2 sources because I thought they were coming from
the same context.

This patch reverts the damage done in those patches, and restores
ReplayReceivedData, more-or-less the way it was before I
started breaking stuff. It then continues the work I started in
https://chromium.googlesource.com/chromium/src/+/8e1badd5fbc054cf4ffc9303e8cb0aa22ce55ca6
and moves the subclassing of WebViewClient to a private helper class.
This helper, renamed to WebViewHelper, now handles all callbacks coming
from the internal WebView (i.e., the "WebView" in "WebViewPlugin"), and
WebViewPlugin continues subclassing WebPlugin and RenderViewObserver
to observe the outside world. This will hopefully make it harder to
screw things up in the same way in the future.

BUG= 675585 

Review-Url: https://codereview.chromium.org/2600253003
Cr-Commit-Position: refs/heads/master@{#441401}

[modify] https://crrev.com/b08418cd6d5f472ca454216aab8fd06cf9a19a36/components/plugins/renderer/loadable_plugin_placeholder.cc
[modify] https://crrev.com/b08418cd6d5f472ca454216aab8fd06cf9a19a36/components/plugins/renderer/webview_plugin.cc
[modify] https://crrev.com/b08418cd6d5f472ca454216aab8fd06cf9a19a36/components/plugins/renderer/webview_plugin.h

Status: Fixed (was: Assigned)

Sign in to add a comment