0
Commit Graph

22 Commits

Author SHA1 Message Date
Paul Semel
8870b09076 content: introduce ipc_interfaces_dumper
This tool can be used to dump the registered browser bound interfaces,
and this patch introduces an API in order to facilitate this work. The
end goal of this is to automatically fuzz the IPC surface. See
crrev.com/c/5490095.

Bug: 40282115
Change-Id: I52526ad5ab03e71dbbd4acc17335fba206de1265
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5472004
Reviewed-by: Arthur Sonzogni <arthursonzogni@chromium.org>
Reviewed-by: Ken Rockot <rockot@google.com>
Commit-Queue: Paul Semel <paulsemel@chromium.org>
Reviewed-by: Adrian Taylor <adetaylor@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1304908}
2024-05-23 08:05:17 +00:00
Johann
344e1c7273 Prerender2: Remove most blink::features::IsPrerender2Enabled() usage
Prerender2 is enabled by default and there is no user
flag to disable it. Remove the simple usages.

BUG=chromium:1391036

Change-Id: I2cf006494c1b9dbdec6adb8c1ca5ca87ef52c830
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4041925
Commit-Queue: Johann Koenig <johannkoenig@google.com>
Reviewed-by: Rakina Zata Amni <rakina@chromium.org>
Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: Sam McNally <sammc@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Florian Leimgruber <fleimgruber@google.com>
Reviewed-by: Takashi Toyoshima <toyoshim@chromium.org>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1074481}
2022-11-22 07:22:30 +00:00
Avi Drissman
4e1b7bc33d Update copyright headers in content/
The methodology used to generate this CL is documented in
https://crbug.com/1098010#c34.

No-Try: true
No-Presubmit: true
Bug: 1098010
Change-Id: I8c0f009d16350271f07d8e5e561085822cc9dd27
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3895935
Owners-Override: Avi Drissman <avi@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
Auto-Submit: Avi Drissman <avi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1047456}
2022-09-15 14:03:50 +00:00
Paul Semel
8218e8174e DanglingPtr: fix BrowserInterfaceBrokenImpl dangling ptr
Bug: 1291138
Change-Id: I28139f3101a6113a4ef713d76ebbce323857c323
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3721625
Reviewed-by: Arthur Sonzogni <arthursonzogni@chromium.org>
Commit-Queue: Arthur Sonzogni <arthursonzogni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1018154}
2022-06-27 09:52:13 +00:00
Arthur Sonzogni
4c9cdacbe6 DanglingPtr: Mark all of them as untriaged [1/N]
This patch must be a no-op with all the common build flags.

Add the "DanglingUntriaged" raw_ptr annotation. It indicates a
raw_ptr becomes dangling, and it should be triaged/fixed.

This annotates the one firing during content_browsertests.
Multiple follow-up will complete the list, up until being able to
enable dangling pointer detection on a bot.

Stats:
- 175 DanglingUntriaged in code
- 69 DanglingUntriaged in tests

Bug=1291138

Change-Id: I00771bd46403f90297aa5b972fdd1ddc23b18e07
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3687960
Commit-Queue: Arthur Sonzogni <arthursonzogni@chromium.org>
Reviewed-by: Bartek Nowierski <bartekn@chromium.org>
Owners-Override: Bartek Nowierski <bartekn@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1013525}
2022-06-13 17:22:56 +00:00
Keishi Hattori
0e45c020c4 Rewrite most Foo* field_ pointer fields to raw_ptr<Foo> field_.
DO NOT REVERT (unless absolutely necessary)! Report build breaks to keishi@(APAC)/glazunov@(EMEA)/sebmarchand@(NA) as soon as you see them. Fixes are expected to be trivial.

This commit was generated automatically, by running the following script: tools/clang/rewrite_raw_ptr_fields/rewrite-multiple-platforms.sh on commit fe74bc434e

For more information, see MiraclePtr One Pager [1], the PSA at chromium-dev@ [2], and the raw_ptr documentation in //base/memory/raw_ptr.md.

FYI This CL does not enable MiraclePtr protection and we expect no behavior change from this.

[1] https://docs.google.com/document/d/1pnnOAIz_DMWDI4oIOFoMAqLnf_MZ2GsrJNb_dbQ3ZBg/edit?usp=sharing
[2] https://groups.google.com/a/chromium.org/g/chromium-dev/c/vAEeVifyf78/m/SkBUc6PhBAAJ

Binary-Size: Increase of around 500kb was approved for MiraclePtr
Include-Ci-Only-Tests: true
No-Tree-Checks: true
No-Presubmit: true
Bug: 1272324, 1073933
Change-Id: I05c86a83bbb4b3f4b017f361dd7f4e7437697f69
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3305132
Commit-Queue: Keishi Hattori <keishi@chromium.org>
Reviewed-by: Bartek Nowierski <bartekn@chromium.org>
Owners-Override: Bartek Nowierski <bartekn@chromium.org>
Cr-Commit-Position: refs/heads/main@{#945735}
2021-11-27 09:25:52 +00:00
Lingqi Chi
2e03d9d6a7 Prerender: Perform capability control on associated interfaces.
This CL generalizes Mojo capability control to associated interfaces.

Before this CL, all of the associated interfaces are granted except
mojom::PepperHost.

After this CL, Prerender2 cancels prerendering when a received
binding request is not allowed to bind during prerendering. The
allowlists are defined in
chrome/browser/chrome_content_browser_client_binder_policies.cc (for
//chrome)
and content/browser/mojo_binder_policy_map_impl.cc(for //content).

Design(chromium@):
https://docs.google.com/document/d/1LPLURqzJW1EuhTAuD3igf1HlP4YaaiF3JNpvTdSZ3LE/edit#heading=h.xfm7goxm51fp

Bug: 1259007
Change-Id: I20ab235d7c2d6fa37aba1b686a064b6ffad36088
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3218175
Commit-Queue: Lingqi Chi <lingqi@chromium.org>
Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Kouhei Ueno <kouhei@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/main@{#939240}
2021-11-08 05:45:41 +00:00
Peter Varga
1ddbd8730b Add missing override in BrowserInterfaceBrokerImpl
Bug: none
Change-Id: Ia3466378679bc125bb3ff94247d54315d7a07020
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3122155
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Commit-Queue: Alex Moshchuk <alexmos@chromium.org>
Cr-Commit-Position: refs/heads/main@{#915679}
2021-08-26 19:27:38 +00:00
danakj
03bc019de2 Add comments for where BrowserInterfaceBrokers get their interfaces.
R=dcheng@chromium.org, nasko@chromium.org

Change-Id: I968242bcaec427d852f528c139f76a82980992da
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2953722
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Nasko Oskov <nasko@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#891814}
2021-06-11 22:12:13 +00:00
Lingqi Chi
ef04f54d7d Prerender: Change CHECK back to DCHECK in mojo control related code
After CL2738156 landed, the risk of non-existing
MojoBinderPolicyApplier was fixed, and we do not receive new crash
reports anymore.
So we can close this issue https://crbug.com/1174506 and clean up
these CHECKs that were added for debugging purpose.

Bug: 1174506
Change-Id: I29d541d3ceb4e5396d0e74f683a3c5d1b9a60997
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2780760
Commit-Queue: Lingqi Chi <lingqi@chromium.org>
Reviewed-by: Matt Falkenhagen <falken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#866061}
2021-03-24 11:42:51 +00:00
Lingqi Chi
242d891e46 Prerender: Set MojoBinderPolicyApplier in the constructor of
RenderFrameHostImpl

After https://chromium-review.googlesource.com/c/chromium/src/+/2689551,
RenderFrameHostImpl(RFHI) can access the correct prerendering state in
its constructor. So RFHI can decide whether to enable Mojo capability
control here according to the prerendering state.
This CL sets MojoBinderPolicyApplier in RFHI::ctor. It brings the
following benefits:
1. In prerendering pages, we can ensure that
BrowserInterfaceBrokerImpl(BIB) receives interface binders after
RFHI sets MojoBinderPolicyApplier, i.e., Mojo capability control is
enabled before BIB receives the first binding request.
2. It unifies the logic of setting MojoBinderPolicyApplier; RFHI sets it
in three different methods before this CL.
3. It guarantees every RenderFrameHostImpl in the prerendering frame
tree enables Mojo capability control. Before this CL, activating the
prerendering page could happen before RFHI::CommitNavigation(), which
fails `CHECK(policy_applier_);` in ReleaseMojoBinderPolicies().

Bug: 1132752, 1160611
Change-Id: Ie1bb0366fc01d3018ad7e6b52cff31152d000f78
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2738156
Commit-Queue: Lingqi Chi <lingqi@chromium.org>
Reviewed-by: Matt Falkenhagen <falken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#861494}
2021-03-10 09:45:49 +00:00
Lingqi Chi
9f5f91752c Prerender: Add Another CHECK for Activation Crash Investigation
Bug: 1174506
Change-Id: I561b7611892d46f0bdace5d192947914c2745546
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2719404
Commit-Queue: Lingqi Chi <lingqi@chromium.org>
Reviewed-by: Matt Falkenhagen <falken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#858486}
2021-03-01 07:41:19 +00:00
Sreeja Kamishetty
60a01b2008 Prerender: Check for navigation inside prerendering browsing context
This CL adds two test cases to check for same-site and cross-site
navigation inside Prerendering browsing context before activation.

We validate that the PrerenderHost will continue to be keyed on
initial prerendered URL and the web contents will point to the
navigated URL on activation.

BUG=1179165

Change-Id: Ia98ea425c4fde566353e9da39fa64a43c7cfbbcc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2699644
Reviewed-by: Matt Falkenhagen <falken@chromium.org>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Commit-Queue: Sreeja Kamishetty <sreejakshetty@chromium.org>
Cr-Commit-Position: refs/heads/master@{#855704}
2021-02-19 17:07:07 +00:00
Lingqi Chi
9d1658d246 Prerender: Change DCHECK to CHECK for Activation Crash Investigation
For some unknown reason, MojoBinderPolicyApplier instances may not exist
when the prerendered page is activated.
This CL changes DCHECK to CHECK to collect more detailed information for
investigation.

Bug: 1174506
Change-Id: Ic42faca60bea04ec86df784e7c25ab2bd4d39265
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2675787
Reviewed-by: Matt Falkenhagen <falken@chromium.org>
Commit-Queue: Matt Falkenhagen <falken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#850988}
2021-02-05 05:32:01 +00:00
Sreeja Kamishetty
d840b49e13 Declare blink::features::IsPrerender2Enabled() method
This CL introduces method IsPrerendered2Enabled() to
third_party/blink/public/common/features.h to make it easy to
query if kPrerender2 feature is enabled or not.

This would replace
base::FeatureList::IsEnabled(blink::features::kPrerender2)
-> blink::features::IsPrerender2Enabled()

BUG=1126305

Change-Id: I94778d363f5598dd34ae27fc95888031eb4f19b0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2642807
Commit-Queue: Sreeja Kamishetty <sreejakshetty@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Reviewed-by: Matt Falkenhagen <falken@chromium.org>
Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org>
Cr-Commit-Position: refs/heads/master@{#848166}
2021-01-28 17:57:48 +00:00
Lingqi Chi
ee8814f71f Prerender: Enable Mojo Capability Control in Prerendering Frames
Prerender2 wants to defer running some interface binders so as to
control the capability of renderer processes in prerendering pages.
This CL creates MojoBinderPolicyApplier and adds it to
BrowserInterfaceBrokerImpl of prerendering frames to make it.

Bug: 1132752
Change-Id: I0777620c68eb0435611ab96e27bc3e56c4936029
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2629067
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Matt Falkenhagen <falken@chromium.org>
Reviewed-by: Takashi Toyoshima <toyoshim@chromium.org>
Commit-Queue: Lingqi Chi <lingqi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#845087}
2021-01-20 07:35:07 +00:00
Lingqi Chi
fa0dda127b Prerender: Equip BrowserInterfaceBroker with MojoBinderPolicyApplier
Some new features, such as prerendering, need to defer some binding
interface requests or stop the renderer when an unexpected mojo pipe is
requested to set up.
This CL introduces MojoBinderPolicyApplier that manages binding requests
and integrates it with BrowserInterfaceBroker.

Regarding the MojoBinderPolicyApplier, it should be initialized with a
predefined policy map. It decide the actions the applier takes when
handling incoming requests. Based on the predefined policies and the
current state, a MojoBinderPolicyApplier instance may take the following
actions:
1. Bind the given interface immediately. (kGrant or
`ResolveDeferredBinders` has been invoked)
2. Delay binding the interface until `ResolveDeferredBinders` is called.
(kDefer)
3. Call the cancelling closure. (kCancel)
4. Stop the renderer and collect some metrics for analysis. (kUnexpected)

Bug: 1132752
Change-Id: Ifdc2f0b27d2f4613274fe5c6e44ddb056a199509
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2513960
Commit-Queue: Lingqi Chi <lingqi@chromium.org>
Reviewed-by: Matt Falkenhagen <falken@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Takashi Toyoshima <toyoshim@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#828609}
2020-11-18 05:32:45 +00:00
Robert Sesek
5a5fbb8cf4 Merge service_manager::BinderMapWithContext into mojo::BinderMap
Tbr: oksamyt@chromium.org
Bug: 1046578
Change-Id: Ic2c01ee09c4b6a9fb2a936acf28fc0f00dc053f1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2174654
Commit-Queue: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Oksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#765090}
2020-05-04 16:18:28 +00:00
Oksana Zhuravlova
3f3295df1c [mojo] Call ReportBadMessage if no browser binder found
This change modifies BrowserInterfaceBrokerImpl::GetInterface() to
trigger a bad message error on its host's receiver.
Browser test added to verify the behaviour.
Empty binders added for interfaces requested by blink but
not bound by content (will mostly be called in tests).

Bug: 1047680
Change-Id: I242cb11fff56666b6b6bd29e49c2180954aa1227
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2062696
Reviewed-by: calamity <calamity@chromium.org>
Reviewed-by: Matt Falkenhagen <falken@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#747877}
2020-03-06 21:43:07 +00:00
Oksana Zhuravlova
4dd171e813 [mojo] Add content embedder support for BrowserInterfaceBroker
This change adds BrowserInterfaceBroker support for content embedders.
Currently this is only used for frames/documents.
This change also converts image Annotator clients to use
BrowserInterfaceBroker and new mojo types from
http://crrev.com/c/1474844 as a use case.

Bug: 985113
Change-Id: Iee78e467e2196c68a3c82b98405fad69824d9176
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1752177
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Ken Rockot <rockot@google.com>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Andrew Moylan <amoylan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#687813}
2019-08-16 20:54:00 +00:00
Oksana Zhuravlova
ceb2cef5ba [mojo] Add BrowserInterfaceBroker support for shared/dedicated workers
This change adds BrowserInterfaceBroker support for binders with context
(in this case shared and dedicated workers), as well as plumbing for
shared and dedicated workers.
It also converts FileSystemManager client in blink to use
BrowserInterfaceBroker for all contexts (should be safe because shared
workers don't use this interface).
DedicatedWorkerHost now has its own header since it is used by
browser_interface_binders.cc

Bug: 985112
Change-Id: If412b07948a0ae7831ec109ae876b0b62ffc1125
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1721936
Reviewed-by: Marijn Kruisselbrink <mek@chromium.org>
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Reviewed-by: Ken Rockot <rockot@google.com>
Reviewed-by: Robert Flack <flackr@chromium.org>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#685422}
2019-08-09 01:09:59 +00:00
Oksana Zhuravlova
fee097c076 [mojo] Introduce BrowserInterfaceBroker
This CL adds the mojom interface that the renderer will use to get
interfaces from the browser, as well as its implementation, functions
for registering interface handlers and all the necessary plumbing.

This CL also converts AudioContext to use BrowserInterfaceBroker.

Bug: 718652
Change-Id: I6b24bc802ca482feac1d8ae5fff7e5bf44215fa4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1688547
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Hongchan Choi <hongchan@chromium.org>
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Reviewed-by: Ken Rockot <rockot@google.com>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#681341}
2019-07-26 17:01:30 +00:00