New issue
Advanced search Search tips

Issue 852145 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Sep 11
Components:
EstimatedDays: ----
NextAction: ----
OS: Fuchsia
Pri: 1
Type: Bug

Blocking:
issue 822474



Sign in to add a comment

Implement chromium::web FIDL services

Project Member Reported by kmarshall@chromium.org, Jun 12 2018

Issue description

Tracking bug for implementing ContextProvider FIDL API functionality.

 
Blocking: 822474
Summary: Implement Context FIDL service portions of WebRunner. (was: Implement ContextProvider FIDL service portions of WebRunner.)
Components: Internals>PlatformIntegration
Owner: kmarshall@chromium.org
Status: Assigned
Labels: M-69
Status: Started (was: Assigned)
Project Member

Comment 5 by bugdroid1@chromium.org, Jul 12

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

commit e26716b5bc2bfab8f7ae74d7418e0ac14749223f
Author: Sergey Ulanov <sergeyu@chromium.org>
Date: Thu Jul 12 01:27:24 2018

[Fuchsia] Add Context, Frame stubs; implement service glue.

* Add ContextImpl service.
* Add FrameImpl service.
* Add support for exiting after final disconnect to ContextProvider.
* Add Context process startup logic to main.cc.
* Rename webrunner_main.cc to web_context_service_main.cc.

Bug:  852145 
Change-Id: I87228259472cc0ef1044ea3e00f94de9a0f61990
Reviewed-on: https://chromium-review.googlesource.com/1114321
Commit-Queue: Sergey Ulanov <sergeyu@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#574445}
[modify] https://crrev.com/e26716b5bc2bfab8f7ae74d7418e0ac14749223f/webrunner/BUILD.gn
[add] https://crrev.com/e26716b5bc2bfab8f7ae74d7418e0ac14749223f/webrunner/service/common.h
[add] https://crrev.com/e26716b5bc2bfab8f7ae74d7418e0ac14749223f/webrunner/service/context_impl.cc
[add] https://crrev.com/e26716b5bc2bfab8f7ae74d7418e0ac14749223f/webrunner/service/context_impl.h
[rename] https://crrev.com/e26716b5bc2bfab8f7ae74d7418e0ac14749223f/webrunner/service/context_provider_impl.cc
[rename] https://crrev.com/e26716b5bc2bfab8f7ae74d7418e0ac14749223f/webrunner/service/context_provider_impl.h
[rename] https://crrev.com/e26716b5bc2bfab8f7ae74d7418e0ac14749223f/webrunner/service/context_provider_impl_unittest.cc
[add] https://crrev.com/e26716b5bc2bfab8f7ae74d7418e0ac14749223f/webrunner/service/frame_impl.cc
[add] https://crrev.com/e26716b5bc2bfab8f7ae74d7418e0ac14749223f/webrunner/service/frame_impl.h

Project Member

Comment 6 by bugdroid1@chromium.org, Jul 16

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

commit 9fc30684ae93f25606e6f9e01c5e73ef44183139
Author: Sergey Ulanov <sergeyu@chromium.org>
Date: Mon Jul 16 19:20:06 2018

[Fuchsia] Enable web::Context implementation in web context service

1. Added ContextProviderMain() that instantiates ContentProviderImpl.
2. Updated WebRunnerMainDelegate to run WebRunnerBrowserMain() only
   when process is started with --type=web-context
3. Updated WebRunnerBrowserMainParts to instantiate ContextImpl.
4. Updated ContextProviderImpl to pass --type=web-context to the
   web context process.

Bug:  852145 
Change-Id: I9740162ad9006df5e254e6ca3d4bed24640c94ce
Reviewed-on: https://chromium-review.googlesource.com/1134585
Commit-Queue: Sergey Ulanov <sergeyu@chromium.org>
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#575378}
[modify] https://crrev.com/9fc30684ae93f25606e6f9e01c5e73ef44183139/webrunner/BUILD.gn
[modify] https://crrev.com/9fc30684ae93f25606e6f9e01c5e73ef44183139/webrunner/browser/webrunner_browser_main_parts.cc
[modify] https://crrev.com/9fc30684ae93f25606e6f9e01c5e73ef44183139/webrunner/browser/webrunner_browser_main_parts.h
[modify] https://crrev.com/9fc30684ae93f25606e6f9e01c5e73ef44183139/webrunner/service/DEPS
[rename] https://crrev.com/9fc30684ae93f25606e6f9e01c5e73ef44183139/webrunner/service/common.cc
[modify] https://crrev.com/9fc30684ae93f25606e6f9e01c5e73ef44183139/webrunner/service/common.h
[modify] https://crrev.com/9fc30684ae93f25606e6f9e01c5e73ef44183139/webrunner/service/context_provider_impl.cc
[add] https://crrev.com/9fc30684ae93f25606e6f9e01c5e73ef44183139/webrunner/service/context_provider_main.cc
[add] https://crrev.com/9fc30684ae93f25606e6f9e01c5e73ef44183139/webrunner/service/context_provider_main.h
[delete] https://crrev.com/508cc6b13b28f73f80fbfd019b83786cfac23970/webrunner/service/switches.h
[modify] https://crrev.com/9fc30684ae93f25606e6f9e01c5e73ef44183139/webrunner/service/webrunner_main_delegate.cc

Project Member

Comment 7 by bugdroid1@chromium.org, Jul 16

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

commit 94489a86ba6a7c4ec78d3f740ac2e2929f92c1f8
Author: Sergey Ulanov <sergeyu@chromium.org>
Date: Mon Jul 16 20:01:32 2018

[Fuchsia] Add basic web::Frame implementation in webrunner

Now webrunner::FrameImpl creates WebContents and a WindowTreeHost.

Also moved FrameImpl and ContextImpl classes to //webrunner/browser
(because they run in the browser process).

Bug:  852145 
Change-Id: Ic1f3e453342f182e28bbf971fae011a671bee105
Reviewed-on: https://chromium-review.googlesource.com/1135836
Reviewed-by: Nico Weber <thakis@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Commit-Queue: Sergey Ulanov <sergeyu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#575394}
[modify] https://crrev.com/94489a86ba6a7c4ec78d3f740ac2e2929f92c1f8/webrunner/BUILD.gn
[modify] https://crrev.com/94489a86ba6a7c4ec78d3f740ac2e2929f92c1f8/webrunner/browser/DEPS
[add] https://crrev.com/94489a86ba6a7c4ec78d3f740ac2e2929f92c1f8/webrunner/browser/context_impl.cc
[rename] https://crrev.com/94489a86ba6a7c4ec78d3f740ac2e2929f92c1f8/webrunner/browser/context_impl.h
[add] https://crrev.com/94489a86ba6a7c4ec78d3f740ac2e2929f92c1f8/webrunner/browser/frame_impl.cc
[add] https://crrev.com/94489a86ba6a7c4ec78d3f740ac2e2929f92c1f8/webrunner/browser/frame_impl.h
[modify] https://crrev.com/94489a86ba6a7c4ec78d3f740ac2e2929f92c1f8/webrunner/browser/webrunner_browser_main_parts.cc
[modify] https://crrev.com/94489a86ba6a7c4ec78d3f740ac2e2929f92c1f8/webrunner/fidl/frame.fidl
[delete] https://crrev.com/f350010aaefed4ab84f9a5e2876e65db53d67753/webrunner/service/context_impl.cc
[delete] https://crrev.com/f350010aaefed4ab84f9a5e2876e65db53d67753/webrunner/service/frame_impl.cc
[delete] https://crrev.com/f350010aaefed4ab84f9a5e2876e65db53d67753/webrunner/service/frame_impl.h

Project Member

Comment 8 by bugdroid1@chromium.org, Jul 17

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

commit eb01f66a4bd077c476390a7e803a8c752d7d63d9
Author: Sergey Ulanov <sergeyu@chromium.org>
Date: Tue Jul 17 21:44:31 2018

[Fuchsia] cleanup target names under //webrunner

Renamed targets under //webrunner as follows:
  service_unittests -> webrunner_unittests
  runner_pkg -> webrunner_pkg
  runner_exe -> webrunner_exe
  runner -> webrunner

Bug:  852145 
Change-Id: Id92d021d29e7fada81153d70440b6376052e3abd
Reviewed-on: https://chromium-review.googlesource.com/1138992
Reviewed-by: Bruce Dawson <brucedawson@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Commit-Queue: Sergey Ulanov <sergeyu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#575787}
[modify] https://crrev.com/eb01f66a4bd077c476390a7e803a8c752d7d63d9/BUILD.gn
[modify] https://crrev.com/eb01f66a4bd077c476390a7e803a8c752d7d63d9/build/config/fuchsia/rules.gni
[modify] https://crrev.com/eb01f66a4bd077c476390a7e803a8c752d7d63d9/webrunner/BUILD.gn

Project Member

Comment 9 by bugdroid1@chromium.org, Jul 18

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

commit f47d21534314fe4dc9e094e8ef9c8cc03381f026
Author: Sergey Ulanov <sergeyu@chromium.org>
Date: Wed Jul 18 18:17:55 2018

[Fuchsia] Use presence of context request to determine process type in webrunner

After http://crrev.com/575378 webrunner used --type=web-context argument
to distinguish between web::ContextProvider and web::Context processes.
This approach didn't work properly because there is a lot of code that
assumes that process_type is not set (or empty) in the browser
process, which corresponds to web::Context. This CL removes
--type=web-context. Instead webrunner uses presense of the Context
request handle in the startup info to distinguish between the two
process types.

Also updated ContextProviderMain() to initialize MessageLoop as it's
required on all threads that use FIDL.

Bug:  852145 
Change-Id: I2d308c712530f5802a4783cbebcffa49fade326d
Reviewed-on: https://chromium-review.googlesource.com/1141174
Commit-Queue: Sergey Ulanov <sergeyu@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576140}
[modify] https://crrev.com/f47d21534314fe4dc9e094e8ef9c8cc03381f026/webrunner/BUILD.gn
[modify] https://crrev.com/f47d21534314fe4dc9e094e8ef9c8cc03381f026/webrunner/browser/webrunner_browser_main_parts.cc
[modify] https://crrev.com/f47d21534314fe4dc9e094e8ef9c8cc03381f026/webrunner/browser/webrunner_browser_main_parts.h
[modify] https://crrev.com/f47d21534314fe4dc9e094e8ef9c8cc03381f026/webrunner/browser/webrunner_content_browser_client.cc
[modify] https://crrev.com/f47d21534314fe4dc9e094e8ef9c8cc03381f026/webrunner/browser/webrunner_content_browser_client.h
[modify] https://crrev.com/f47d21534314fe4dc9e094e8ef9c8cc03381f026/webrunner/service/context_provider_impl.cc
[modify] https://crrev.com/f47d21534314fe4dc9e094e8ef9c8cc03381f026/webrunner/service/context_provider_main.cc
[modify] https://crrev.com/f47d21534314fe4dc9e094e8ef9c8cc03381f026/webrunner/service/context_provider_main.h
[modify] https://crrev.com/f47d21534314fe4dc9e094e8ef9c8cc03381f026/webrunner/service/web_content_service_main.cc
[modify] https://crrev.com/f47d21534314fe4dc9e094e8ef9c8cc03381f026/webrunner/service/webrunner_main_delegate.cc
[modify] https://crrev.com/f47d21534314fe4dc9e094e8ef9c8cc03381f026/webrunner/service/webrunner_main_delegate.h

Project Member

Comment 10 by bugdroid1@chromium.org, Jul 30

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

commit 9c6f36a7a19eff8c67b1fa464e7f7859f12ae1b3
Author: Sergey Ulanov <sergeyu@chromium.org>
Date: Mon Jul 30 15:19:27 2018

[Fuchsia] Update webrunner to pass data directory to Context process.

Now the ContextProvider process passes data directory to the context
process as /web_context_data namespace. If the caller doesn't provide
dataDirectory then the ContextProvider start Context in incognito
mode by adding --incognito flag.

Bug:  852145 
Change-Id: Id873d4334d59bac8781cb595ea836a0ace3434d4
Reviewed-on: https://chromium-review.googlesource.com/1149262
Reviewed-by: Wez <wez@chromium.org>
Commit-Queue: Wez <wez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#579042}
[modify] https://crrev.com/9c6f36a7a19eff8c67b1fa464e7f7859f12ae1b3/webrunner/browser/webrunner_browser_context.cc
[modify] https://crrev.com/9c6f36a7a19eff8c67b1fa464e7f7859f12ae1b3/webrunner/browser/webrunner_browser_context.h
[modify] https://crrev.com/9c6f36a7a19eff8c67b1fa464e7f7859f12ae1b3/webrunner/browser/webrunner_browser_main_parts.cc
[modify] https://crrev.com/9c6f36a7a19eff8c67b1fa464e7f7859f12ae1b3/webrunner/service/common.cc
[modify] https://crrev.com/9c6f36a7a19eff8c67b1fa464e7f7859f12ae1b3/webrunner/service/common.h
[modify] https://crrev.com/9c6f36a7a19eff8c67b1fa464e7f7859f12ae1b3/webrunner/service/context_provider_impl.cc
[modify] https://crrev.com/9c6f36a7a19eff8c67b1fa464e7f7859f12ae1b3/webrunner/service/context_provider_impl.h
[modify] https://crrev.com/9c6f36a7a19eff8c67b1fa464e7f7859f12ae1b3/webrunner/service/context_provider_impl_unittest.cc

Project Member

Comment 11 by bugdroid1@chromium.org, Aug 1

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

commit e297cf6060e6a8bf879f9c7654ce9df3aed465d1
Author: Sergey Ulanov <sergeyu@chromium.org>
Date: Wed Aug 01 18:40:43 2018

[Fuchsia] Update launch options when starting context process.

1. /pkg, /svc and /config/ssl are now cloned to Context processes.
   https://crrev.com/1149262 removed FDIO_SPAWN_CLONE_NAMESPACE.
   As result the context process was failing to open /pkg/icudtl.dat.
2. Added FDIO_SPAWN_CLONE_JOB flag - job needs to be cloned so the
   context process can start its own children.
3. Updated SandboxPolicyFuchsia not to clone /tmp - it doesn't appear
   to be necessary for any sandboxed processes.
4. Removed FDIO_SPAWN_CLONE_STDIO for Context and sandboxed processes.
   Instead stderr is added fds_to_map.

Bug:  852145 ,  869216 ,  868556 
Change-Id: I89c429231cd0e295247c80f12e587e1c7335456b
Reviewed-on: https://chromium-review.googlesource.com/1155967
Commit-Queue: Sergey Ulanov <sergeyu@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#579872}
[modify] https://crrev.com/e297cf6060e6a8bf879f9c7654ce9df3aed465d1/content/common/sandbox_policy_fuchsia.cc
[modify] https://crrev.com/e297cf6060e6a8bf879f9c7654ce9df3aed465d1/webrunner/service/context_provider_impl.cc

Summary: Implement chromium::web FIDL services (was: Implement Context FIDL service portions of WebRunner.)
Project Member

Comment 13 by bugdroid1@chromium.org, Aug 22

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

commit 01e9d14f17aded5502c811f30029485e3785da63
Author: Kevin Marshall <kmarshall@chromium.org>
Date: Wed Aug 22 01:19:14 2018

[fuchsia] Implement NavigationController.Reload() method.

Adds support for Reload()ing a chromium::web::Frame.
* Browser test added to verify the resulting navigation event and network
request.
* Minor cleanup in context_impl_browsertest.cc

Bug:  852145 
Change-Id: Ie7893b49e0872bb4b1a4c57b972d9c5f75a2ee34
Reviewed-on: https://chromium-review.googlesource.com/1180519
Reviewed-by: Sergey Ulanov <sergeyu@chromium.org>
Commit-Queue: Kevin Marshall <kmarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#584944}
[modify] https://crrev.com/01e9d14f17aded5502c811f30029485e3785da63/webrunner/browser/context_impl_browsertest.cc
[modify] https://crrev.com/01e9d14f17aded5502c811f30029485e3785da63/webrunner/browser/frame_impl.cc
[modify] https://crrev.com/01e9d14f17aded5502c811f30029485e3785da63/webrunner/browser/frame_impl.h
[modify] https://crrev.com/01e9d14f17aded5502c811f30029485e3785da63/webrunner/fidl/navigation_controller.fidl

Project Member

Comment 14 by bugdroid1@chromium.org, Aug 22

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

commit 489df11cf0900cf2a1104fdec2efc09f8508f9b0
Author: Kevin Marshall <kmarshall@chromium.org>
Date: Wed Aug 22 20:49:35 2018

[fuchsia] Implement Frame::GetVisibleEntry() API method.

This method uses the NavigationController API to query the committed
navigational state on a Frame.

Bug:  852145 
Change-Id: I49f9122753c393ef33d67905353b5ba1afad157a
Reviewed-on: https://chromium-review.googlesource.com/1182507
Reviewed-by: Sergey Ulanov <sergeyu@chromium.org>
Commit-Queue: Kevin Marshall <kmarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585237}
[modify] https://crrev.com/489df11cf0900cf2a1104fdec2efc09f8508f9b0/webrunner/browser/context_impl_browsertest.cc
[modify] https://crrev.com/489df11cf0900cf2a1104fdec2efc09f8508f9b0/webrunner/browser/frame_impl.cc

Project Member

Comment 15 by bugdroid1@chromium.org, Aug 22

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

commit 2ae0e929c8451e237663625a60bedca36f5de5c7
Author: Kevin Marshall <kmarshall@chromium.org>
Date: Wed Aug 22 23:52:14 2018

[fuchsia] Add NavigationEventObserver with callback flow control.

Replaces the FIDL event based handler for navigation events with
a NavigationEventObserver class, which can be set or removed
at any point over the lifetime of a Frame.

The Observer uses acknowledgement closures for flow control. The client
signals that it is ready to receive an additional navigation event by
invoking the closure.


Bug:  852145 
Change-Id: I0a53d6d003a44d895b6616b8d19a85e524b22053
Reviewed-on: https://chromium-review.googlesource.com/1183593
Commit-Queue: Kevin Marshall <kmarshall@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585317}
[modify] https://crrev.com/2ae0e929c8451e237663625a60bedca36f5de5c7/webrunner/BUILD.gn
[modify] https://crrev.com/2ae0e929c8451e237663625a60bedca36f5de5c7/webrunner/browser/context_impl_browsertest.cc
[modify] https://crrev.com/2ae0e929c8451e237663625a60bedca36f5de5c7/webrunner/browser/frame_impl.cc
[modify] https://crrev.com/2ae0e929c8451e237663625a60bedca36f5de5c7/webrunner/browser/frame_impl.h
[modify] https://crrev.com/2ae0e929c8451e237663625a60bedca36f5de5c7/webrunner/fidl/frame.fidl
[add] https://crrev.com/2ae0e929c8451e237663625a60bedca36f5de5c7/webrunner/fidl/navigation_state_change_observer.fidl
[modify] https://crrev.com/2ae0e929c8451e237663625a60bedca36f5de5c7/webrunner/service/context_provider_impl_unittest.cc

Project Member

Comment 16 by bugdroid1@chromium.org, Aug 23

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

commit c591a584d8354f1b690305ecbc06110eb98294b6
Author: Kevin Marshall <kmarshall@chromium.org>
Date: Wed Aug 22 23:59:36 2018

[fuchsia] Implement the Frame::Stop() method.

This method calls directly into WebContents::Stop(). Added a test case
for end-to-end verification of browser behavior.

Bug:  852145 
Change-Id: Ia1301976542e3b4996579422b98e4d2ae41ea646
Reviewed-on: https://chromium-review.googlesource.com/1185737
Commit-Queue: Kevin Marshall <kmarshall@chromium.org>
Reviewed-by: Sergey Ulanov <sergeyu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585320}
[modify] https://crrev.com/c591a584d8354f1b690305ecbc06110eb98294b6/webrunner/browser/context_impl_browsertest.cc
[modify] https://crrev.com/c591a584d8354f1b690305ecbc06110eb98294b6/webrunner/browser/frame_impl.cc
[modify] https://crrev.com/c591a584d8354f1b690305ecbc06110eb98294b6/webrunner/browser/frame_impl.h

Status: Fixed (was: Started)
We have the basic implementation landed; let's close this out in favour of API-specific work-tracking bugs.

Sign in to add a comment