New issue
Advanced search Search tips

Issue 731588 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jul 2017
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocked on:
issue 731581

Blocking:
issue 705982
issue 731589



Sign in to add a comment

Embed Service Manager in //ios/web

Project Member Reported by blundell@chromium.org, Jun 9 2017

Issue description

Similarly to how the Service Manager is currently embedded in //content, we need to embed it in //ios/web to make services available to embedders of //ios/web.
 
Blocking: 731589
Project Member

Comment 2 by bugdroid1@chromium.org, Jun 23 2017

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

commit bcd0fb5e6755bdfd4b8bc96b6ef70258b96b9ac4
Author: Colin Blundell <blundell@chromium.org>
Date: Fri Jun 23 15:05:59 2017

Bundle //ios/web resources in web shell

Upcoming work that will embed Service Manager in //ios/web will add
usage of //ios/web/resources; I will test this embedding via an EG
test that exercises web_shell and thus will need web_shell to bundle
these resources.

Bug:  731588 
Change-Id: I1767d02ab13f6960811d80f516cc807f6ad486a1
Reviewed-on: https://chromium-review.googlesource.com/544310
Reviewed-by: Sylvain Defresne <sdefresne@chromium.org>
Commit-Queue: Colin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#481887}
[modify] https://crrev.com/bcd0fb5e6755bdfd4b8bc96b6ef70258b96b9ac4/ios/web/shell/BUILD.gn
[modify] https://crrev.com/bcd0fb5e6755bdfd4b8bc96b6ef70258b96b9ac4/ios/web/shell/shell_web_client.h
[modify] https://crrev.com/bcd0fb5e6755bdfd4b8bc96b6ef70258b96b9ac4/ios/web/shell/shell_web_client.mm
[modify] https://crrev.com/bcd0fb5e6755bdfd4b8bc96b6ef70258b96b9ac4/ios/web/shell/shell_web_main_parts.h
[modify] https://crrev.com/bcd0fb5e6755bdfd4b8bc96b6ef70258b96b9ac4/ios/web/shell/shell_web_main_parts.mm

Project Member

Comment 3 by bugdroid1@chromium.org, Jun 27 2017

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

commit 29d682c92068cd88424d3e3a9a27efe65575d8b0
Author: Colin Blundell <blundell@chromium.org>
Date: Tue Jun 27 08:55:04 2017

[Services] Add echo service for use in testing contexts

This CL adds a test-only echo service that can be used as a simple
example service to connect to in end-to-end testing contexts.

This service will shortly be used in an end-to-end test of the
embedding of the Service Manager in //ios/web. The addition of the service
is split out into this CL to avoid that CL growing further.

Bug:  731588 
Change-Id: I4949685f12e23fc482e33ebfdc71f45a396ef482
Reviewed-on: https://chromium-review.googlesource.com/548395
Reviewed-by: Ken Rockot <rockot@chromium.org>
Reviewed-by: Mike West <mkwst@chromium.org>
Commit-Queue: Colin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#482575}
[add] https://crrev.com/29d682c92068cd88424d3e3a9a27efe65575d8b0/services/test/echo/BUILD.gn
[add] https://crrev.com/29d682c92068cd88424d3e3a9a27efe65575d8b0/services/test/echo/README.md
[add] https://crrev.com/29d682c92068cd88424d3e3a9a27efe65575d8b0/services/test/echo/echo_service.cc
[add] https://crrev.com/29d682c92068cd88424d3e3a9a27efe65575d8b0/services/test/echo/echo_service.h
[add] https://crrev.com/29d682c92068cd88424d3e3a9a27efe65575d8b0/services/test/echo/manifest.json
[add] https://crrev.com/29d682c92068cd88424d3e3a9a27efe65575d8b0/services/test/echo/public/interfaces/BUILD.gn
[add] https://crrev.com/29d682c92068cd88424d3e3a9a27efe65575d8b0/services/test/echo/public/interfaces/OWNERS
[add] https://crrev.com/29d682c92068cd88424d3e3a9a27efe65575d8b0/services/test/echo/public/interfaces/echo.mojom

Project Member

Comment 4 by bugdroid1@chromium.org, Jun 28 2017

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

commit 812ec680264fbf200c17379271a386435a3c68ac
Author: Colin Blundell <blundell@chromium.org>
Date: Wed Jun 28 08:56:58 2017

[Services] Make embedder files available for reuse by iOS

This CL moves ServiceManager embedder files that will be reused by iOS
out of //content and into //services_manager/embedder. These files are
conceptually lower-level than the //content embedder as exemplified by
the fact that they'll be reused as-is on iOS.

Bug:  731588 
Change-Id: I02e72cd1fef8f50137900400eb55f916b1ba8b68
Reviewed-on: https://chromium-review.googlesource.com/548456
Reviewed-by: Ken Rockot <rockot@chromium.org>
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Commit-Queue: Colin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#482922}
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/chrome/browser/chrome_content_browser_client.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/chrome/browser/profiles/off_the_record_profile_impl.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/chrome/browser/profiles/profile_impl.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/chrome/utility/DEPS
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/chrome/utility/chrome_content_utility_client.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/chromecast/browser/cast_content_browser_client.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/browser/browser_context.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/browser/service_manager/service_manager_context.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/child/service_factory.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/child/service_factory.h
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/common/BUILD.gn
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/common/service_manager/service_manager_connection_impl.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/common/service_manager/service_manager_connection_impl.h
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/common/service_manager/service_manager_connection_impl_unittest.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/gpu/gpu_service_factory.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/public/browser/browser_context.h
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/public/browser/content_browser_client.h
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/public/common/BUILD.gn
[delete] https://crrev.com/0eee229999881656e25a1ebc6093caa2831535b9/content/public/common/service_info.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/public/common/service_manager_connection.h
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/public/utility/content_utility_client.h
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/shell/browser/shell_content_browser_client.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/shell/utility/shell_content_utility_client.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/content/utility/utility_service_factory.cc
[modify] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/services/service_manager/embedder/BUILD.gn
[add] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/services/service_manager/embedder/embedded_service_info.cc
[rename] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/services/service_manager/embedder/embedded_service_info.h
[rename] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/services/service_manager/embedder/embedded_service_runner.cc
[rename] https://crrev.com/812ec680264fbf200c17379271a386435a3c68ac/services/service_manager/embedder/embedded_service_runner.h

Project Member

Comment 5 by bugdroid1@chromium.org, Jun 29 2017

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

commit d316d4a7dc44df9d85862e654b70a2a5d39e6333
Author: Colin Blundell <blundell@chromium.org>
Date: Thu Jun 29 16:57:27 2017

Embed Service Manager in //ios/web

This CL adds an embedding of the Service Manager in //ios/web, such that
it is now possible to host and connect to services in //ios/{web, chrome}.

The infrastructure is based on that for //content but simplified and
adapted to the context of //ios, where:
- Multiprocess does not exist.
- Connection filters are not relevant, as Chrome IPC is not relevant.
- There is no short-term plan to migrate to using ServiceManager's main
  function.

Concretely, this CL does the following things:
(1) Adds ServiceManagerConnection as an //ios/web public interface. This
is the gateway for connecting to services from //ios.
(2) Adds ServiceManagerContext, which embeds an in-process ServiceManager.
(3) Adds ServiceManagerConnectionImpl, which gets a connection to the
ServiceManager.
(4) Adds the ability for //ios/web and its clients to register global
services.
(5) Adds an Earl Grey test in //ios/web/shell that hosts the echo service
and tests the ability to connect to that service. This test also serves
as an example usage of the infrastructure added in this CL.
(6) Adds shell grit resources in order to allow the shell to package
overlays of service manifests.

Support for per-user services will be added in a followup CL.

Bug:  731588 
Change-Id: I90321de772a753c84fa4c28ad7021f084dd3e75a
Reviewed-on: https://chromium-review.googlesource.com/549461
Reviewed-by: Sylvain Defresne <sdefresne@chromium.org>
Reviewed-by: Eugene But <eugenebut@chromium.org>
Reviewed-by: Ken Rockot <rockot@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Colin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#483392}
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/chrome/app/main_controller.mm
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/BUILD.gn
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/DEPS
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/app/BUILD.gn
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/app/web_main_loop.h
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/app/web_main_loop.mm
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/app/web_main_runner.mm
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/ios_web_resources.grd
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/public/DEPS
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/public/OWNERS
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/public/app/BUILD.gn
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/public/app/mojo/OWNERS
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/public/app/mojo/web_browser_manifest.json
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/public/app/mojo/web_packaged_services_manifest.json
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/public/service_manager_connection.h
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/public/service_names.mojom
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/public/web_client.h
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/public/web_client.mm
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/service_manager_connection_impl.cc
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/service_manager_connection_impl.h
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/service_manager_connection_impl_unittest.cc
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/service_manager_context.h
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/service_manager_context.mm
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/shell/BUILD.gn
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/shell/DEPS
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/shell/shell_resources.grd
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/shell/shell_web_client.h
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/shell/shell_web_client.mm
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/shell/test/BUILD.gn
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/shell/test/service_manager_egtest.mm
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/shell/web_shell_browser_manifest_overlay.json
[add] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/ios/web/shell/web_shell_packaged_services_manifest_overlay.json
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/services/service_manager/embedder/BUILD.gn
[modify] https://crrev.com/d316d4a7dc44df9d85862e654b70a2a5d39e6333/tools/gritsettings/resource_ids

Project Member

Comment 6 by bugdroid1@chromium.org, Jun 29 2017

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

commit aff4cf93dc0f34ba94204d5af26f55d837d983d9
Author: Rohit Rao <rohitrao@chromium.org>
Date: Thu Jun 29 17:42:04 2017

Revert "Embed Service Manager in //ios/web"

This reverts commit d316d4a7dc44df9d85862e654b70a2a5d39e6333.

Reason for revert: Crashes ios_web_view_inttests:

[0629/100820.039796:FATAL:service_manager_context.mm(59)] Check failed: !contents.empty().

Original change's description:
> Embed Service Manager in //ios/web
> 
> This CL adds an embedding of the Service Manager in //ios/web, such that
> it is now possible to host and connect to services in //ios/{web, chrome}.
> 
> The infrastructure is based on that for //content but simplified and
> adapted to the context of //ios, where:
> - Multiprocess does not exist.
> - Connection filters are not relevant, as Chrome IPC is not relevant.
> - There is no short-term plan to migrate to using ServiceManager's main
>   function.
> 
> Concretely, this CL does the following things:
> (1) Adds ServiceManagerConnection as an //ios/web public interface. This
> is the gateway for connecting to services from //ios.
> (2) Adds ServiceManagerContext, which embeds an in-process ServiceManager.
> (3) Adds ServiceManagerConnectionImpl, which gets a connection to the
> ServiceManager.
> (4) Adds the ability for //ios/web and its clients to register global
> services.
> (5) Adds an Earl Grey test in //ios/web/shell that hosts the echo service
> and tests the ability to connect to that service. This test also serves
> as an example usage of the infrastructure added in this CL.
> (6) Adds shell grit resources in order to allow the shell to package
> overlays of service manifests.
> 
> Support for per-user services will be added in a followup CL.
> 
> Bug:  731588 
> Change-Id: I90321de772a753c84fa4c28ad7021f084dd3e75a
> Reviewed-on: https://chromium-review.googlesource.com/549461
> Reviewed-by: Sylvain Defresne <sdefresne@chromium.org>
> Reviewed-by: Eugene But <eugenebut@chromium.org>
> Reviewed-by: Ken Rockot <rockot@chromium.org>
> Reviewed-by: Nico Weber <thakis@chromium.org>
> Reviewed-by: Tom Sepez <tsepez@chromium.org>
> Commit-Queue: Colin Blundell <blundell@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#483392}

TBR=thakis@chromium.org,rockot@chromium.org,blundell@chromium.org,sdefresne@chromium.org,tsepez@chromium.org,eugenebut@chromium.org

Change-Id: Icc07e272e490ef2636083c3e77fc129520a0710f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  731588 
Reviewed-on: https://chromium-review.googlesource.com/556133
Reviewed-by: Rohit Rao <rohitrao@chromium.org>
Commit-Queue: Rohit Rao <rohitrao@chromium.org>
Cr-Commit-Position: refs/heads/master@{#483410}
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/chrome/app/main_controller.mm
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/BUILD.gn
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/DEPS
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/app/BUILD.gn
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/app/web_main_loop.h
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/app/web_main_loop.mm
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/app/web_main_runner.mm
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/ios_web_resources.grd
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/public/DEPS
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/public/OWNERS
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/public/app/BUILD.gn
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/public/app/mojo/OWNERS
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/public/app/mojo/web_browser_manifest.json
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/public/app/mojo/web_packaged_services_manifest.json
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/public/service_manager_connection.h
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/public/service_names.mojom
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/public/web_client.h
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/public/web_client.mm
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/service_manager_connection_impl.cc
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/service_manager_connection_impl.h
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/service_manager_connection_impl_unittest.cc
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/service_manager_context.h
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/service_manager_context.mm
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/shell/BUILD.gn
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/shell/DEPS
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/shell/shell_resources.grd
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/shell/shell_web_client.h
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/shell/shell_web_client.mm
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/ios/web/shell/test/BUILD.gn
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/shell/test/service_manager_egtest.mm
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/shell/web_shell_browser_manifest_overlay.json
[delete] https://crrev.com/2a248c59c211c4c7cdc1a09b3f615e40a21e9345/ios/web/shell/web_shell_packaged_services_manifest_overlay.json
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/services/service_manager/embedder/BUILD.gn
[modify] https://crrev.com/aff4cf93dc0f34ba94204d5af26f55d837d983d9/tools/gritsettings/resource_ids

Project Member

Comment 7 by bugdroid1@chromium.org, Jun 30 2017

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

commit acd6be00d8f5dc8b460f0e2da16b317ecd4072d3
Author: Colin Blundell <blundell@chromium.org>
Date: Fri Jun 30 16:58:59 2017

[iOS] Have Web View expose data resources to web

Web View is bundling resources but until now was not exposing them to
//ios/web via WebClient. This exposure will be necessary for the
upcoming embedding of ServiceManager in //ios/web.

Bug:  731588 
Change-Id: I6484e170066a34e697aa53aa480f35b0a3fa634d
Reviewed-on: https://chromium-review.googlesource.com/558084
Reviewed-by: Eugene But <eugenebut@chromium.org>
Commit-Queue: Colin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#483737}
[modify] https://crrev.com/acd6be00d8f5dc8b460f0e2da16b317ecd4072d3/ios/web_view/internal/web_view_web_client.h
[modify] https://crrev.com/acd6be00d8f5dc8b460f0e2da16b317ecd4072d3/ios/web_view/internal/web_view_web_client.mm

Project Member

Comment 8 by bugdroid1@chromium.org, Jul 3 2017

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

commit 24db7f894712ddf164e41314f99b4a54f84c18f7
Author: Colin Blundell <blundell@chromium.org>
Date: Mon Jul 03 15:54:21 2017

[iOS] Have showcase bundle web resources

//ios/web, like //content, has a general assumption that it should be
able to get at its own internal resources via WebClient::GetDataResource().

This is currently not true among all //ios/web embedders, but an upcoming
CL will rely on this functionality. This CL adds bundling of iOS web
resources into Showcase and makes those resources available to //ios/web.

In an ideal world, it seems that Showcase wouldn't be an //ios/web embedder
at all, in which case these requirements would become irrelevant for
Showcase.

Bug:  731588 
Change-Id: I19b2f9b103bfe5674ee3e2100cb40174cd30dc4c
Reviewed-on: https://chromium-review.googlesource.com/558063
Commit-Queue: Colin Blundell <blundell@chromium.org>
Reviewed-by: Mark Cogan <marq@chromium.org>
Cr-Commit-Position: refs/heads/master@{#484010}
[modify] https://crrev.com/24db7f894712ddf164e41314f99b4a54f84c18f7/ios/showcase/BUILD.gn
[modify] https://crrev.com/24db7f894712ddf164e41314f99b4a54f84c18f7/ios/showcase/DEPS
[modify] https://crrev.com/24db7f894712ddf164e41314f99b4a54f84c18f7/ios/showcase/core/BUILD.gn
[modify] https://crrev.com/24db7f894712ddf164e41314f99b4a54f84c18f7/ios/showcase/core/app_delegate.mm

Project Member

Comment 9 by bugdroid1@chromium.org, Jul 4 2017

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

commit 285e5bbcf8a594cfb6d646252e87e8b44c53fddc
Author: Colin Blundell <blundell@chromium.org>
Date: Tue Jul 04 09:10:32 2017

Embed Service Manager in //ios/web

This CL adds an embedding of the Service Manager in //ios/web, such that
it is now possible to host and connect to services in //ios/{web, chrome}.

The infrastructure is based on that for //content but simplified and
adapted to the context of //ios, where:
- Multiprocess does not exist.
- Connection filters are not relevant, as Chrome IPC is not relevant.
- There is no short-term plan to migrate to using ServiceManager's main
  function.

Concretely, this CL does the following things:
(1) Adds ServiceManagerConnection as an //ios/web public interface. This
is the gateway for connecting to services from //ios.
(2) Adds ServiceManagerContext, which embeds an in-process ServiceManager.
(3) Adds ServiceManagerConnectionImpl, which gets a connection to the
ServiceManager.
(4) Adds the ability for //ios/web and its clients to register global
services.
(5) Adds an Earl Grey test in //ios/web/shell that hosts the echo service
and tests the ability to connect to that service. This test also serves
as an example usage of the infrastructure added in this CL.
(6) Adds shell grit resources in order to allow the shell to package
overlays of service manifests.

Support for per-user services will be added in a followup CL.

NOTE: This is an unchanged reland of the initial CL; in the meantime,
I've landed CLs that bundle web resources in all //ios/web embedders,
ensuring that the addition of this CL doesn't cause those embedders to
crash.

TBR=eugenebut@chromium.org

Bug:  731588 
Change-Id: Ie3c69fbce710c3ef0683297cd5d073228a49c9c9
Reviewed-on: https://chromium-review.googlesource.com/558977
Reviewed-by: Colin Blundell <blundell@chromium.org>
Commit-Queue: Colin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#484073}
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/chrome/app/main_controller.mm
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/BUILD.gn
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/DEPS
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/app/BUILD.gn
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/app/web_main_loop.h
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/app/web_main_loop.mm
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/app/web_main_runner.mm
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/ios_web_resources.grd
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/public/DEPS
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/public/OWNERS
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/public/app/BUILD.gn
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/public/app/mojo/OWNERS
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/public/app/mojo/web_browser_manifest.json
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/public/app/mojo/web_packaged_services_manifest.json
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/public/service_manager_connection.h
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/public/service_names.mojom
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/public/web_client.h
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/public/web_client.mm
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/service_manager_connection_impl.cc
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/service_manager_connection_impl.h
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/service_manager_connection_impl_unittest.cc
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/service_manager_context.h
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/service_manager_context.mm
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/shell/BUILD.gn
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/shell/DEPS
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/shell/shell_resources.grd
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/shell/shell_web_client.h
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/shell/shell_web_client.mm
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/shell/test/BUILD.gn
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/shell/test/service_manager_egtest.mm
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/shell/web_shell_browser_manifest_overlay.json
[add] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/ios/web/shell/web_shell_packaged_services_manifest_overlay.json
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/services/service_manager/embedder/BUILD.gn
[modify] https://crrev.com/285e5bbcf8a594cfb6d646252e87e8b44c53fddc/tools/gritsettings/resource_ids

Project Member

Comment 10 by bugdroid1@chromium.org, Jul 7 2017

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

commit 30a166fe661cd548c4d11cb5ace170e9eb99ff46
Author: Colin Blundell <blundell@chromium.org>
Date: Fri Jul 07 10:38:36 2017

[services] Add UserId test service

This service will be used in an upcoming integration test of the
embedding of per-user services in //ios/web. It is a per-user service
that simply exposes the ability to get its user id.

Bug:  731588 
Change-Id: I7eb9bfc308e4f13146ecc2621695b58c27efb7a9
Reviewed-on: https://chromium-review.googlesource.com/559678
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Ken Rockot <rockot@chromium.org>
Commit-Queue: Colin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#484878}
[add] https://crrev.com/30a166fe661cd548c4d11cb5ace170e9eb99ff46/services/test/user_id/BUILD.gn
[add] https://crrev.com/30a166fe661cd548c4d11cb5ace170e9eb99ff46/services/test/user_id/README.md
[add] https://crrev.com/30a166fe661cd548c4d11cb5ace170e9eb99ff46/services/test/user_id/manifest.json
[add] https://crrev.com/30a166fe661cd548c4d11cb5ace170e9eb99ff46/services/test/user_id/public/interfaces/BUILD.gn
[add] https://crrev.com/30a166fe661cd548c4d11cb5ace170e9eb99ff46/services/test/user_id/public/interfaces/OWNERS
[add] https://crrev.com/30a166fe661cd548c4d11cb5ace170e9eb99ff46/services/test/user_id/public/interfaces/user_id.mojom
[add] https://crrev.com/30a166fe661cd548c4d11cb5ace170e9eb99ff46/services/test/user_id/user_id_service.cc
[add] https://crrev.com/30a166fe661cd548c4d11cb5ace170e9eb99ff46/services/test/user_id/user_id_service.h

Project Member

Comment 11 by bugdroid1@chromium.org, Jul 11 2017

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

commit d4c96c75e47934596a2dbe44a946a294453cb1d4
Author: Colin Blundell <blundell@chromium.org>
Date: Tue Jul 11 07:24:12 2017

[iOS] Bring up support for per-user services on iOS

This CL augments the existing ServiceManager embedding on iOS with
support for per-user embedded services. A "per-user" service is one
that has one instance per user, rather than a shared instance for all
users. Concretely, each BrowserState has a unique UserID, and there is
one instance of a per-user service per UserID. Essentially, one can
think of per-user services as the equivalent of profile-keyed services
in the services world.

The support added in this CL closely follows that of //content:

- Public APIs are identical
- Implementation in BrowserState follows that of BrowserContext with minor
  changes:
  - iOS doesn't use File Service at this time
  - No client of //ios/web needs to override how a user ID is generated

This CL adds an Earl Grey test of web_shell that a per-user service can be
embedded and if connected to from a given BrowserState, has its user ID
properly associated with that of the BrowserState.

Finally, this added support requires that all BrowserState subclasses call
BrowserState::Initialize(). This is also done in this CL.

Bug:  731588 
Change-Id: Ie3bb79d4f754aecddd9c35c72576262dfc87cb55
Reviewed-on: https://chromium-review.googlesource.com/559529
Reviewed-by: Ken Rockot <rockot@chromium.org>
Reviewed-by: Eugene But <eugenebut@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Sylvain Defresne <sdefresne@chromium.org>
Commit-Queue: Colin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#485547}
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/chrome/browser/browser_state/chrome_browser_state_impl.cc
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_impl.cc
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/chrome/browser/browser_state/test_chrome_browser_state.mm
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/web/browser_state.mm
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/web/public/app/mojo/web_browser_manifest.json
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/web/public/browser_state.h
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/web/public/test/fakes/test_browser_state.cc
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/web/service_manager_connection_impl.cc
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/web/shell/BUILD.gn
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/web/shell/DEPS
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/web/shell/shell_browser_state.h
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/web/shell/shell_browser_state.mm
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/web/shell/test/BUILD.gn
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/web/shell/test/service_manager_egtest.mm
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/web/shell/web_shell_browser_manifest_overlay.json
[modify] https://crrev.com/d4c96c75e47934596a2dbe44a946a294453cb1d4/ios/web_view/internal/web_view_browser_state.mm

Status: Fixed (was: Assigned)

Sign in to add a comment