New issue
Advanced search Search tips

Issue 853140 link

Starred by 9 users

Issue metadata

Status: Fixed
Owner:
Closed: Oct 26
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Chrome , Mac
Pri: 2
Type: Bug-Regression



Sign in to add a comment

Object tag loads 404 contents in newer chromium versions

Reported by nereva...@gmail.com, Jun 15 2018

Issue description

UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36

Steps to reproduce the problem:
1. Open the test page with chrome 67 and with an older version of chrome or with firefox.

What is the expected behavior?
The fallback html inside the object tag should be showed

What went wrong?
The page linked in the data attribute of the object tag (that returns a 404 with a text/html type) gets loaded instead of the fallback content

Did this work before? Yes chromium 66

Does this work in other browsers? Yes

Chrome version: 67.0.3396.87  Channel: stable
OS Version: 10.0
Flash Version:
 
objectbug.html
408 bytes View Download
chrome_2018-06-15_11-40-22.png
5.3 KB View Download

Comment 1 by nereva...@gmail.com, Jun 15 2018

Here's a JSfiddle for a rapid test: https://jsfiddle.net/wmzok56n/
Cc: creis@chromium.org alex...@chromium.org dcheng@chromium.org
Components: -Blink>HTML Internals>Sandbox>SiteIsolation
Labels: OS-Chrome OS-Linux OS-Mac
Owner: ekaramad@chromium.org
Status: Assigned (was: Unconfirmed)
I believe this is a site isolation issue.  On Linux ToT, with site isolation disabled, I see the fallback content (the <span> with the question mark), and with site isolation enabled, I see the 404 content, which is loaded in an OOPIF.

nerevar88@: can you try setting chrome://flags/#site-isolation-trial-opt-out to "Opt out" and report if that solves your problem?

Ehsan, given that you've been looking into <object> and <embed> tabs recently, would you be able to look into this?  Or maybe Daniel, since it seems related to your https://src.chromium.org/viewvc/blink?view=revision&revision=195068, and I still see these TODOs in RemoteFrameOwner, which we probably need to implement?
  // TODO(dcheng): Implement.
  bool CanRenderFallbackContent() const override { return false; }
  void RenderFallbackContent() override {}

Comment 3 by dcheng@chromium.org, Jun 15 2018

I think this is relatively straightforward to implement. It looks like CanRenderFallbackContent() is always true for <object> tags, so we could just plumb that down to the RemoteFrameOwner fairly easily (and it's immutable once created). This could probably be plumbed via the frame at creation time.

RenderFallbackContent() would "just" have to IPC back to the HTMLFrameOwnerElement to tell it to use fallback content.

(The only thing I'm worried about is if there are any subtleties around whether the object tag has fallback content at all)

Comment 4 by dcheng@chromium.org, Jun 15 2018

Components: Blink>HTML>Object
There is also no guarantee that if HTMLPluginElement::HasFallback() is true at the time of request, it is also true when we call back to its process to ask for fallback.
I mean <object src="http://example.com/exists"> <p> Fallback </p> </object>

and then
document.querySelector("object").data = invalidValue;
document.querySelector("object").innerHTML = "";


I did investigate this a bit more and I think Daniel's suggestion in comment #3 makes sense. However, before proceeding I want to recite a small part of spec:
https://www.w3.org/TR/html52/semantics-embedded-content.html#the-object-element

"..If the load failed (e.g., there was an HTTP 404 error, there was a DNS error), fire a simple event named error at the element, then jump to the step below labeled fallback.."

My understanding is that this is relevant to the bug here. I think we already know about the error here:
https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/html/html_image_loader.cc?rcl=341426ee2d7cc468ae64469577017e5e5909fcd0&l=91

but IIUC then that leads to removing the mime type from image and retrying as a frame:

https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/html/html_object_element.cc?rcl=6ac9bbee36933fef85af1f7c4d313340eee0ff45&l=353.

This time around we will navigate a content frame to the destination and fail (maybe load the data from cache?).

So I wonder if we have the hooks/notifications already for the second attempt. To know that there was a 'simple error' might be merely enough to ask for fallback. I will try to investigate more.

Comment 7 by nereva...@gmail.com, Jun 18 2018

I can confirm that setting chrome://flags/#site-isolation-trial-opt-out to "Opt out" solves the issue form me.

Comment 8 by creis@chromium.org, Jun 22 2018

Labels: M-68 M-69 M-67 Target-69
Status: Started (was: Assigned)
Quick update: ekaramad@ has a fix in review at https://chromium-review.googlesource.com/c/chromium/src/+/1105635.  Given the size of the change, I suspect it will not be easily mergeable to M68, so let's target M69.
Cc: viswa.karala@chromium.org
 Issue 856863  has been merged into this issue.
Last update for this issue was a while ago. Has there been more progress? The CL is still open.
Labels: -Target-69 Target-71 M-70
#10: Status update is that the CL from #8 still needs dcheng@'s review and also might have a test issue to resolve.  At this point the more likely target is M71, so updating milestones.
Project Member

Comment 12 by bugdroid1@chromium.org, Oct 19

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

commit 02cb80e67052e59d324ae1f78d2c94c63da52939
Author: Ehsan Karamad <ekaramad@chromium.org>
Date: Fri Oct 19 17:02:03 2018

Implement fallback content for RemoteFrameOwner

RemoteFrameOwner does not implement the logic for fallback content. This
means if a cross-origin navigation fails with some error, the owner
element (in this context, <object>) in the parent process does not get
notified and will not use its fallback content (instead the frame might
 show an error page).

When the <object> has fallback content, it should always use that over
the frame's error message. To support this matter, this CL implements
fallback methods in RemoteFrameOwner. Essentially,

  * When <object> creates a local frame, the corresponding frame tree
node will be marked as the type that "can" render fallback content. This
will propagte everywhere using FrameReplicationState.

  * When the provisional loading of a frame fails, RemoteFrameOwner will
notify the browser through the current proxy for navigation. The browser
then uses the parent frame to notify the renderer process that the owner
element should render its own fallback content.

  * If the <object> does not specify fallback, the navigation to error
page commits and the error page is shown.

  * When the <object> renders its own content, the remote frame stays
alive. This is a bug but not a new one; It will be fixed in future CLs.

Bug:  853140 
Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng
Change-Id: Icad3934ccfc1823c0cdecd8e1223e6370ea4b3bb
Reviewed-on: https://chromium-review.googlesource.com/c/1105635
Commit-Queue: Ehsan Karamad <ekaramad@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Ehsan Karamad <ekaramad@chromium.org>
Reviewed-by: Wei Li <weili@chromium.org>
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#601194}
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/components/printing/renderer/print_render_frame_helper.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/browser/bad_message.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/browser/frame_host/frame_tree.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/browser/frame_host/frame_tree.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/browser/frame_host/frame_tree_node.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/browser/frame_host/frame_tree_node.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/browser/frame_host/frame_tree_node_blame_context_unittest.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/browser/frame_host/frame_tree_unittest.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/browser/frame_host/navigation_controller_impl_unittest.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/browser/frame_host/render_frame_host_impl.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/browser/frame_host/render_frame_host_impl.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/browser/frame_host/render_frame_host_manager_unittest.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/browser/frame_host/render_frame_message_filter.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/browser/renderer_host/render_process_host_unittest.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/browser/site_per_process_browsertest.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/common/frame_messages.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/common/frame_replication_state.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/common/frame_replication_state.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/renderer/render_frame_impl.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/renderer/render_frame_impl.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/renderer/render_frame_proxy.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/renderer/render_frame_proxy.h
[add] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/test/data/page_with_object_fallback.html
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/content/test/test_render_frame_host.cc
[add] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-object-element/object-fallback-failed-cross-origin-navigation.sub.html
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/public/common/BUILD.gn
[add] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/public/common/frame/frame_owner_element_type.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/public/web/web_local_frame.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/public/web/web_local_frame_client.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/public/web/web_remote_frame.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/editing/spellcheck/idle_spell_check_controller_test.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/exported/web_frame_test.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/exported/web_plugin_container_test.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/exported/web_remote_frame_impl.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/exported/web_view_test.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/frame/frame_owner.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/frame/frame_test_helpers.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/frame/frame_test_helpers.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/frame/remote_frame_owner.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/frame/remote_frame_owner.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/frame/web_local_frame_impl.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/html/html_embed_element.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/html/html_frame_element.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/html/html_frame_owner_element.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/html/html_iframe_element.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/html/html_image_loader.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/html/html_object_element.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/html/html_object_element.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/html/html_object_element_test.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/html/html_plugin_element.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/html/portal/html_portal_element.h
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/loader/document_loader.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/third_party/blink/renderer/core/loader/document_loader_test.cc
[modify] https://crrev.com/02cb80e67052e59d324ae1f78d2c94c63da52939/tools/metrics/histograms/enums.xml

Project Member

Comment 13 by bugdroid1@chromium.org, Oct 19

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

commit 3e226bd616aa30c7b77fb948746af57c3ece01f2
Author: Findit <findit-for-me@appspot.gserviceaccount.com>
Date: Fri Oct 19 18:15:36 2018

Revert "Implement fallback content for RemoteFrameOwner"

This reverts commit 02cb80e67052e59d324ae1f78d2c94c63da52939.

Reason for revert:

Findit (https://goo.gl/kROfz5) identified CL at revision 601194 as the
culprit for failures in the build cycles as shown on:
https://findit-for-me.appspot.com/waterfall/culprit?key=ag9zfmZpbmRpdC1mb3ItbWVyRAsSDVdmU3VzcGVjdGVkQ0wiMWNocm9taXVtLzAyY2I4MGU2NzA1MmU1OWQzMjRhZTFmNzhkMmM5NGM2M2RhNTI5MzkM

Sample Failed Build: https://ci.chromium.org/buildbot/chromium.linux/Cast%20Audio%20Linux/23519

Sample Failed Step: content_browsertests

Original change's description:
> Implement fallback content for RemoteFrameOwner
> 
> RemoteFrameOwner does not implement the logic for fallback content. This
> means if a cross-origin navigation fails with some error, the owner
> element (in this context, <object>) in the parent process does not get
> notified and will not use its fallback content (instead the frame might
>  show an error page).
> 
> When the <object> has fallback content, it should always use that over
> the frame's error message. To support this matter, this CL implements
> fallback methods in RemoteFrameOwner. Essentially,
> 
>   * When <object> creates a local frame, the corresponding frame tree
> node will be marked as the type that "can" render fallback content. This
> will propagte everywhere using FrameReplicationState.
> 
>   * When the provisional loading of a frame fails, RemoteFrameOwner will
> notify the browser through the current proxy for navigation. The browser
> then uses the parent frame to notify the renderer process that the owner
> element should render its own fallback content.
> 
>   * If the <object> does not specify fallback, the navigation to error
> page commits and the error page is shown.
> 
>   * When the <object> renders its own content, the remote frame stays
> alive. This is a bug but not a new one; It will be fixed in future CLs.
> 
> Bug:  853140 
> Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng
> Change-Id: Icad3934ccfc1823c0cdecd8e1223e6370ea4b3bb
> Reviewed-on: https://chromium-review.googlesource.com/c/1105635
> Commit-Queue: Ehsan Karamad <ekaramad@chromium.org>
> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> Reviewed-by: Ehsan Karamad <ekaramad@chromium.org>
> Reviewed-by: Wei Li <weili@chromium.org>
> Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#601194}

Change-Id: I82ae325ed780fb44d8a8a0205b70f9be8bedc60b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  853140 
Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng
Reviewed-on: https://chromium-review.googlesource.com/c/1291997
Cr-Commit-Position: refs/heads/master@{#601225}
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/components/printing/renderer/print_render_frame_helper.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/browser/bad_message.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/browser/frame_host/frame_tree.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/browser/frame_host/frame_tree.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/browser/frame_host/frame_tree_node.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/browser/frame_host/frame_tree_node.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/browser/frame_host/frame_tree_node_blame_context_unittest.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/browser/frame_host/frame_tree_unittest.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/browser/frame_host/navigation_controller_impl_unittest.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/browser/frame_host/render_frame_host_impl.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/browser/frame_host/render_frame_host_impl.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/browser/frame_host/render_frame_host_manager_unittest.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/browser/frame_host/render_frame_message_filter.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/browser/renderer_host/render_process_host_unittest.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/browser/site_per_process_browsertest.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/common/frame_messages.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/common/frame_replication_state.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/common/frame_replication_state.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/renderer/render_frame_impl.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/renderer/render_frame_impl.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/renderer/render_frame_proxy.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/renderer/render_frame_proxy.h
[delete] https://crrev.com/e48e42897d9d8dd00c7bf45fa317067387222f2e/content/test/data/page_with_object_fallback.html
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/content/test/test_render_frame_host.cc
[delete] https://crrev.com/e48e42897d9d8dd00c7bf45fa317067387222f2e/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-object-element/object-fallback-failed-cross-origin-navigation.sub.html
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/public/common/BUILD.gn
[delete] https://crrev.com/e48e42897d9d8dd00c7bf45fa317067387222f2e/third_party/blink/public/common/frame/frame_owner_element_type.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/public/web/web_local_frame.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/public/web/web_local_frame_client.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/public/web/web_remote_frame.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/editing/spellcheck/idle_spell_check_controller_test.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/exported/web_frame_test.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/exported/web_plugin_container_test.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/exported/web_remote_frame_impl.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/exported/web_view_test.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/frame/frame_owner.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/frame/frame_test_helpers.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/frame/frame_test_helpers.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/frame/remote_frame_owner.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/frame/remote_frame_owner.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/frame/web_local_frame_impl.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/html/html_embed_element.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/html/html_frame_element.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/html/html_frame_owner_element.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/html/html_iframe_element.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/html/html_image_loader.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/html/html_object_element.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/html/html_object_element.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/html/html_object_element_test.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/html/html_plugin_element.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/html/portal/html_portal_element.h
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/loader/document_loader.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/third_party/blink/renderer/core/loader/document_loader_test.cc
[modify] https://crrev.com/3e226bd616aa30c7b77fb948746af57c3ece01f2/tools/metrics/histograms/enums.xml

Project Member

Comment 14 by bugdroid1@chromium.org, Oct 21

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

commit 192a8da25b4622a1f89ef1386d4f949f24978fcd
Author: Ehsan Karamad <ekaramad@chromium.org>
Date: Sun Oct 21 03:48:08 2018

Reland "Implement fallback content for RemoteFrameOwner"

This is a reland of 02cb80e67052e59d324ae1f78d2c94c63da52939

The issues seems to have been the test case {'a', 'b', 'b'} where
apparently the failed navigation still fires a load event which might
arrive sooner than fallback update. The reland modifies the test file
to suppress sending 'OBJECT_LOAD' event from the test page.

Original change's description:
> Implement fallback content for RemoteFrameOwner
>
> RemoteFrameOwner does not implement the logic for fallback content. This
> means if a cross-origin navigation fails with some error, the owner
> element (in this context, <object>) in the parent process does not get
> notified and will not use its fallback content (instead the frame might
>  show an error page).
>
> When the <object> has fallback content, it should always use that over
> the frame's error message. To support this matter, this CL implements
> fallback methods in RemoteFrameOwner. Essentially,
>
>   * When <object> creates a local frame, the corresponding frame tree
> node will be marked as the type that "can" render fallback content. This
> will propagte everywhere using FrameReplicationState.
>
>   * When the provisional loading of a frame fails, RemoteFrameOwner will
> notify the browser through the current proxy for navigation. The browser
> then uses the parent frame to notify the renderer process that the owner
> element should render its own fallback content.
>
>   * If the <object> does not specify fallback, the navigation to error
> page commits and the error page is shown.
>
>   * When the <object> renders its own content, the remote frame stays
> alive. This is a bug but not a new one; It will be fixed in future CLs.
>
> Bug:  853140 
> Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng
> Change-Id: Icad3934ccfc1823c0cdecd8e1223e6370ea4b3bb
> Reviewed-on: https://chromium-review.googlesource.com/c/1105635
> Commit-Queue: Ehsan Karamad <ekaramad@chromium.org>
> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> Reviewed-by: Ehsan Karamad <ekaramad@chromium.org>
> Reviewed-by: Wei Li <weili@chromium.org>
> Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#601194}

TBR=dcheng@chromium.org,alexmos@chromium.org,weili@chromium.org

Bug:  853140 
Change-Id: Ib1594aa642ea238f745fd29d191818fddc503afc
Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng
Reviewed-on: https://chromium-review.googlesource.com/c/1292899
Reviewed-by: Ehsan Karamad <ekaramad@chromium.org>
Commit-Queue: Ehsan Karamad <ekaramad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#601411}
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/components/printing/renderer/print_render_frame_helper.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/browser/bad_message.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/browser/frame_host/frame_tree.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/browser/frame_host/frame_tree.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/browser/frame_host/frame_tree_node.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/browser/frame_host/frame_tree_node.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/browser/frame_host/frame_tree_node_blame_context_unittest.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/browser/frame_host/frame_tree_unittest.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/browser/frame_host/navigation_controller_impl_unittest.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/browser/frame_host/render_frame_host_impl.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/browser/frame_host/render_frame_host_impl.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/browser/frame_host/render_frame_host_manager_unittest.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/browser/frame_host/render_frame_message_filter.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/browser/renderer_host/render_process_host_unittest.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/browser/site_per_process_browsertest.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/common/frame_messages.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/common/frame_replication_state.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/common/frame_replication_state.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/renderer/render_frame_impl.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/renderer/render_frame_impl.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/renderer/render_frame_proxy.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/renderer/render_frame_proxy.h
[add] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/test/data/page_with_object_fallback.html
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/content/test/test_render_frame_host.cc
[add] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/WebKit/LayoutTests/external/wpt/html/semantics/embedded-content/the-object-element/object-fallback-failed-cross-origin-navigation.sub.html
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/public/common/BUILD.gn
[add] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/public/common/frame/frame_owner_element_type.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/public/web/web_local_frame.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/public/web/web_local_frame_client.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/public/web/web_remote_frame.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/editing/spellcheck/idle_spell_check_controller_test.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/exported/web_frame_test.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/exported/web_plugin_container_test.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/exported/web_remote_frame_impl.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/exported/web_view_test.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/frame/frame_owner.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/frame/frame_test_helpers.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/frame/frame_test_helpers.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/frame/remote_frame_owner.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/frame/remote_frame_owner.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/frame/web_local_frame_impl.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/html/html_embed_element.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/html/html_frame_element.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/html/html_frame_owner_element.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/html/html_iframe_element.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/html/html_image_loader.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/html/html_object_element.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/html/html_object_element.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/html/html_object_element_test.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/html/html_plugin_element.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/html/portal/html_portal_element.h
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/loader/document_loader.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/third_party/blink/renderer/core/loader/document_loader_test.cc
[modify] https://crrev.com/192a8da25b4622a1f89ef1386d4f949f24978fcd/tools/metrics/histograms/enums.xml

Cc: bokan@chromium.org wjmaclean@chromium.org kenrb@chromium.org ekaramad@chromium.org
 Issue 890571  has been merged into this issue.
Status: Fixed (was: Started)
This should be fixed in 72.
I don't think we want this merged back to 71 (given the size of the CL). Making note of that just in case we want it merged.

Sign in to add a comment