New issue
Advanced search Search tips

Issue 612341 link

Starred by 5 users

Issue metadata

Status: Started
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Task

Blocked on:
issue 647598
issue 689394

Blocking:
issue 598069
issue 612328



Sign in to add a comment

Content Modularization Project: Time Zone Monitor

Project Member Reported by jam@chromium.org, May 16 2016

Issue description

Tracking bug for the time zone monitor part of the Content Modularization Project. The end goal should be to have a self-contained service. As part of getting rid (or greatly reducing) content/, this code should move out of content/. Most likely to device/time_zone_monitor to be consistent with what's being done for other device related APIs.

Strawman proposal, following other services that we're extracting from content:
-convert IPCs to mojo
-eliminate the dependencies in this code on other code in content/
-move remaining code in content/browser/time_zone_monitor* to device/time_zone_monitor
 

Comment 1 by jam@chromium.org, May 17 2016

Blocking: -598073 598069
Owner: blundell@chromium.org
Status: Started (was: Available)
I'll look into this.
I developed a short design doc: https://docs.google.com/document/d/1ukMujoNM9eK7eTXlMfSzHp-ydep5xpVHrkhHBeE9ADQ/edit#

John, could you take a look?
Mark, could you take a look to verify my understanding of the current design and implementation?

Comment 4 by mark@chromium.org, Aug 30 2016

Your understanding is sound. You already found the CL that I would have referred you to that has all of the notes.
Blockedon: 647598
Project Member

Comment 6 by bugdroid1@chromium.org, Sep 16 2016

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

commit c00adf442e48581afa7df022a0e84c507d1ff3e3
Author: blundell <blundell@chromium.org>
Date: Fri Sep 16 10:43:41 2016

Mojoify time zone update IPC from browser to renderer

To start the servicification of //content's time zone monitoring code,
this CL Mojoifies the ViewMsg_TimezoneChange message sent from the browser
to the renderer. To do so, we introduce the TimeZoneMonitor Mojo interface
(living in //device, where the implementation will move to), and change
content::TimeZoneMonitor to implement the interface. Rather than notifying
all RenderProcessHosts on a time zone change, content::TimeZoneMonitor
maintains connections to the clients (RenderThreadImpl in this case)
and notifies them directly on a time zone change. This CL uses the
polling pattern described here:
https://groups.google.com/a/chromium.org/forum/#!topic/mojo-dev/pSNDDN3gpFo
for consistency with the way that the geolocation and battery monitor
interfaces work (in practice, it's unlikely that time zone change updates
would flood the client, of course).

Followup will decouple content::TimeZoneMonitor from //content and move it to //
device.

BUG=612341
TEST=http://crbug.com/288697#c12: load the page, change the system time zone,
     and then click "recheck" to ensure that the renderer picks up the new
     time zone. Don't reload the page, which is likely to give you a new
     renderer process, use the "recheck" link on the page.

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

[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/browser/DEPS
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/browser/browser_main_loop.h
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/browser/renderer_host/render_process_host_impl.h
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/browser/time_zone_monitor.cc
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/browser/time_zone_monitor.h
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/browser/time_zone_monitor_android.cc
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/browser/time_zone_monitor_chromeos.cc
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/browser/time_zone_monitor_linux.cc
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/browser/time_zone_monitor_mac.mm
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/browser/time_zone_monitor_win.cc
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/common/BUILD.gn
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/common/view_messages.h
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/public/browser/render_process_host.h
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/public/test/mock_render_process_host.cc
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/public/test/mock_render_process_host.h
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/renderer/DEPS
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/content/renderer/render_thread_impl.h
[add] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/device/time_zone_monitor/OWNERS
[add] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/device/time_zone_monitor/public/interfaces/BUILD.gn
[add] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/device/time_zone_monitor/public/interfaces/OWNERS
[add] https://crrev.com/c00adf442e48581afa7df022a0e84c507d1ff3e3/device/time_zone_monitor/public/interfaces/time_zone_monitor.mojom

Project Member

Comment 7 by bugdroid1@chromium.org, Sep 26 2016

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

commit c6c6dca93baa98e7375f90589f1342d5b2ad5318
Author: leon.han <leon.han@intel.com>
Date: Mon Sep 26 17:59:53 2016

[TimeZoneMonitor] Decouple //content/browser/time_zone_monitor* to //device/.

BUG=612341
TEST=http://crbug.com/288697#c12: load the page, change the system time zone,
     and then click "recheck" to ensure that the renderer picks up the new
     time zone. Don't reload the page, which is likely to give you a new
     renderer process, use the "recheck" link on the page.

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

[modify] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/content/app/BUILD.gn
[modify] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/content/app/DEPS
[modify] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/content/app/android/library_loader_hooks.cc
[modify] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/content/browser/BUILD.gn
[modify] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/content/browser/DEPS
[modify] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/content/browser/android/browser_jni_registrar.cc
[modify] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/content/browser/browser_main_loop.cc
[modify] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/content/browser/browser_main_loop.h
[modify] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/content/common/BUILD.gn
[modify] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/content/public/android/BUILD.gn
[modify] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/content/renderer/BUILD.gn
[add] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/device/time_zone_monitor/BUILD.gn
[add] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/device/time_zone_monitor/DEPS
[rename] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/device/time_zone_monitor/android/java/src/org/chromium/device/time_zone_monitor/TimeZoneMonitor.java
[add] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/device/time_zone_monitor/android/time_zone_monitor_jni_registrar.cc
[add] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/device/time_zone_monitor/android/time_zone_monitor_jni_registrar.h
[rename] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/device/time_zone_monitor/time_zone_monitor.cc
[rename] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/device/time_zone_monitor/time_zone_monitor.h
[rename] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/device/time_zone_monitor/time_zone_monitor_android.cc
[rename] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/device/time_zone_monitor/time_zone_monitor_android.h
[rename] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/device/time_zone_monitor/time_zone_monitor_chromeos.cc
[add] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/device/time_zone_monitor/time_zone_monitor_export.h
[rename] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/device/time_zone_monitor/time_zone_monitor_linux.cc
[rename] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/device/time_zone_monitor/time_zone_monitor_mac.mm
[rename] https://crrev.com/c6c6dca93baa98e7375f90589f1342d5b2ad5318/device/time_zone_monitor/time_zone_monitor_win.cc

Project Member

Comment 8 by bugdroid1@chromium.org, Nov 9 2016

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

commit 7a219524da03c684d4ca6367caca55bbcf79dbab
Author: leon.han <leon.han@intel.com>
Date: Wed Nov 09 04:23:37 2016

[TimeZoneMonitor] Decouple renderer side impl from content to blink.

In addition to the decoupling work, this CL:
  * notifies time zone change to all the workerBackingThread, no matter they
    do OWN their platform thread or not, while the old behavior is that only
    those workerBackingThread OWNING a platform thread could get the
    notifications, which is incorrect.
  * will initialize TimeZoneMonitorClient in blink::initialize() if a message
    loop has already been created, this is always true for production code,
    while some unit tests may have not prepared the message loop when
    calling blink::initialize(), so TimeZoneMonitorClient won't be initialized.

TBR=xhwang@chromium.org,rockot@chromium.org
BUG=612341
TEST=http://crbug.com/288697#c12: load the page, change the system time zone,
     and then click "recheck" to ensure that the renderer picks up the new
     time zone. Don't reload the page, which is likely to give you a new
     renderer process, use the "recheck" link on the page.

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

[modify] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/content/browser/BUILD.gn
[modify] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/content/public/test/render_view_test.cc
[modify] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/content/renderer/BUILD.gn
[modify] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/content/renderer/render_thread_impl.h
[modify] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/media/blink/BUILD.gn
[modify] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/media/blink/DEPS
[modify] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/media/blink/run_all_unittests.cc
[modify] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/third_party/WebKit/Source/core/workers/WorkerThread.cpp
[modify] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/third_party/WebKit/Source/core/workers/WorkerThread.h
[modify] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/third_party/WebKit/Source/modules/BUILD.gn
[modify] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/third_party/WebKit/Source/modules/ModulesInitializer.cpp
[add] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/third_party/WebKit/Source/modules/time_zone_monitor/BUILD.gn
[add] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/third_party/WebKit/Source/modules/time_zone_monitor/DEPS
[add] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/third_party/WebKit/Source/modules/time_zone_monitor/OWNERS
[add] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/third_party/WebKit/Source/modules/time_zone_monitor/TimeZoneMonitorClient.cpp
[add] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/third_party/WebKit/Source/modules/time_zone_monitor/TimeZoneMonitorClient.h
[modify] https://crrev.com/7a219524da03c684d4ca6367caca55bbcf79dbab/third_party/WebKit/Source/platform/mojo/MojoHelper.h

Project Member

Comment 9 by bugdroid1@chromium.org, Dec 19 2016

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

commit 8e3745ac05d7918a91ff9efb02280a7c1443de5c
Author: blundell <blundell@chromium.org>
Date: Mon Dec 19 17:37:30 2016

Enable connection to Mojo services from Blink

This CL enables connections to Mojo services from Blink; more specifically,
from //third_party/WebKit/Source/modules, where dependencies on Chromium
code are in general undesired (including on Mojo services' client
libraries). To enable connecting to services without using the
Service Manager's client library, this CL does the following:

(1) Adds a method to Platform that exposes the connection to the
ServiceManager as a service_manager::mojom::blink::ConnectorPtr.
(2) Builds a bare-bones ServiceConnector around this ConnectorPtr that
supports connecting to Mojo services by name from Blink.
(3) Ports TimeZoneMonitor to be hosted in the Device Service as an example
of connecting to an interface that is hosted in a service other than
//content/browser from Blink.

ServiceConnector being "bare-bones" includes the facts that:
- Unlike blink::InterfaceProvider, blink::ServiceConnector is currently
thread-hostile. This should be easy to relax using similar mechanisms as
InterfaceProviderImpl.
- There is currently no API for obtaining an InterfaceProvider for a given
service (or a thread-safe wrapper, per the above comment). Again, this should
be easy to add.

This CL also moves the definition of the device service name to mojom instead
of C++ in order to facilitate using this constant from Blink.

BUG=612341
TEST=http://crbug.com/288697#c12: load the page, change the system time zone,
     and then click "recheck" to ensure that the renderer picks up the new
     time zone. Don't reload the page, which is likely to give you a new
     renderer process, use the "recheck" link on the page.

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

[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/content/browser/BUILD.gn
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/content/browser/DEPS
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/content/browser/browser_context.cc
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/content/browser/browser_main_loop.cc
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/content/browser/browser_main_loop.h
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/content/child/BUILD.gn
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/content/child/blink_platform_impl.cc
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/content/child/blink_platform_impl.h
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/content/public/app/mojo/content_renderer_manifest.json
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/services/device/BUILD.gn
[add] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/services/device/DEPS
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/services/device/device_service.cc
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/services/device/device_service.h
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/services/device/manifest.json
[delete] https://crrev.com/6a5753338748562405998d3bf8ef94f40b3cde9c/services/device/public/cpp/constants.cc
[delete] https://crrev.com/6a5753338748562405998d3bf8ef94f40b3cde9c/services/device/public/cpp/constants.h
[rename] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/services/device/public/interfaces/BUILD.gn
[add] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/services/device/public/interfaces/OWNERS
[add] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/services/device/public/interfaces/constants.mojom
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/third_party/WebKit/Source/modules/time_zone_monitor/BUILD.gn
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/third_party/WebKit/Source/modules/time_zone_monitor/DEPS
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/third_party/WebKit/Source/modules/time_zone_monitor/TimeZoneMonitorClient.cpp
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/third_party/WebKit/Source/platform/BUILD.gn
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/third_party/WebKit/Source/platform/DEPS
[add] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/third_party/WebKit/Source/platform/ServiceConnector.h
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/third_party/WebKit/Source/platform/exported/Platform.cpp
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/third_party/WebKit/public/BUILD.gn
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/third_party/WebKit/public/platform/DEPS
[modify] https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c/third_party/WebKit/public/platform/Platform.h

Project Member

Comment 10 by bugdroid1@chromium.org, Dec 19 2016

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

commit bbfdf0517f5986ea2e356067644eb5be1e4de264
Author: jam <jam@chromium.org>
Date: Mon Dec 19 18:30:06 2016

Revert of Enable connection to Mojo services from Blink (patchset #19 id:360001 of https://codereview.chromium.org/2460723003/ )

Reason for revert:
Caused some build failures, looks like missing dependencies?

https://build.chromium.org/p/chromium.gpu/builders/GPU%20Win%20Builder/builds/56562/steps/compile/logs/stdio

FAILED: obj/third_party/WebKit/Source/platform/heap/heap/ThreadState.obj
ninja -t msvc -e environment.x86 -- E:\b\c\cipd\goma/gomacc.exe "E:\b\depot_tools\win_toolchain\vs_files\d3cb0e37bdd120ad0ac4650b674b09e81be45616\VC\bin\amd64_x86/cl.exe" /nologo /showIncludes /FC @obj/third_party/WebKit/Source/platform/heap/heap/ThreadState.obj.rsp /c ../../third_party/WebKit/Source/platform/heap/ThreadState.cpp /Foobj/third_party/WebKit/Source/platform/heap/heap/ThreadState.obj /Fd"obj/third_party/WebKit/Source/platform/heap/heap_cc.pdb"
e:\b\c\b\win\src\third_party\webkit\public\platform\platform.h(59): fatal error C1083: Cannot open include file: 'services/service_manager/public/interfaces/connector.mojom-blink.h': No such file or directory

Original issue's description:
> Enable connection to Mojo services from Blink
>
> This CL enables connections to Mojo services from Blink; more specifically,
> from //third_party/WebKit/Source/modules, where dependencies on Chromium
> code are in general undesired (including on Mojo services' client
> libraries). To enable connecting to services without using the
> Service Manager's client library, this CL does the following:
>
> (1) Adds a method to Platform that exposes the connection to the
> ServiceManager as a service_manager::mojom::blink::ConnectorPtr.
> (2) Builds a bare-bones ServiceConnector around this ConnectorPtr that
> supports connecting to Mojo services by name from Blink.
> (3) Ports TimeZoneMonitor to be hosted in the Device Service as an example
> of connecting to an interface that is hosted in a service other than
> //content/browser from Blink.
>
> ServiceConnector being "bare-bones" includes the facts that:
> - Unlike blink::InterfaceProvider, blink::ServiceConnector is currently
> thread-hostile. This should be easy to relax using similar mechanisms as
> InterfaceProviderImpl.
> - There is currently no API for obtaining an InterfaceProvider for a given
> service (or a thread-safe wrapper, per the above comment). Again, this should
> be easy to add.
>
> This CL also moves the definition of the device service name to mojom instead
> of C++ in order to facilitate using this constant from Blink.
>
> BUG=612341
> TEST=http://crbug.com/288697#c12: load the page, change the system time zone,
>      and then click "recheck" to ensure that the renderer picks up the new
>      time zone. Don't reload the page, which is likely to give you a new
>      renderer process, use the "recheck" link on the page.
>
> Committed: https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c
> Cr-Commit-Position: refs/heads/master@{#439498}

TBR=jochen@chromium.org,dcheng@chromium.org,esprehn@chromium.org,haraken@chromium.org,noel@chromium.org,rockot@chromium.org,blundell@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=612341

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

[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/content/browser/BUILD.gn
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/content/browser/DEPS
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/content/browser/browser_context.cc
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/content/browser/browser_main_loop.cc
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/content/browser/browser_main_loop.h
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/content/child/BUILD.gn
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/content/child/blink_platform_impl.cc
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/content/child/blink_platform_impl.h
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/content/public/app/mojo/content_renderer_manifest.json
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/services/device/BUILD.gn
[delete] https://crrev.com/ad58f8382643800d7107f43c91bd2f9776da4900/services/device/DEPS
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/services/device/device_service.cc
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/services/device/device_service.h
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/services/device/manifest.json
[rename] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/services/device/public/cpp/BUILD.gn
[add] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/services/device/public/cpp/constants.cc
[add] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/services/device/public/cpp/constants.h
[delete] https://crrev.com/ad58f8382643800d7107f43c91bd2f9776da4900/services/device/public/interfaces/OWNERS
[delete] https://crrev.com/ad58f8382643800d7107f43c91bd2f9776da4900/services/device/public/interfaces/constants.mojom
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/third_party/WebKit/Source/modules/time_zone_monitor/BUILD.gn
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/third_party/WebKit/Source/modules/time_zone_monitor/DEPS
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/third_party/WebKit/Source/modules/time_zone_monitor/TimeZoneMonitorClient.cpp
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/third_party/WebKit/Source/platform/BUILD.gn
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/third_party/WebKit/Source/platform/DEPS
[delete] https://crrev.com/ad58f8382643800d7107f43c91bd2f9776da4900/third_party/WebKit/Source/platform/ServiceConnector.h
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/third_party/WebKit/Source/platform/exported/Platform.cpp
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/third_party/WebKit/public/BUILD.gn
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/third_party/WebKit/public/platform/DEPS
[modify] https://crrev.com/bbfdf0517f5986ea2e356067644eb5be1e4de264/third_party/WebKit/public/platform/Platform.h

Project Member

Comment 11 by bugdroid1@chromium.org, Dec 22 2016

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

commit 32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b
Author: blundell <blundell@chromium.org>
Date: Thu Dec 22 15:05:51 2016

Enable connection to Mojo services from Blink

This CL enables connections to Mojo services from Blink; more specifically,
from //third_party/WebKit/Source/modules, where dependencies on Chromium
code are in general undesired (including on Mojo services' client
libraries). To enable connecting to services without using the
Service Manager's client library, this CL does the following:

(1) Adds a method to Platform that binds the connection to the
ServiceManager.
(2) Builds a bare-bones ServiceConnector around this connection that
supports connecting to Mojo services by name from Blink.
(3) Ports TimeZoneMonitor to be hosted in the Device Service as an example
of connecting to an interface that is hosted in a service other than
//content/browser from Blink.

ServiceConnector being "bare-bones" includes the facts that:
- Unlike blink::InterfaceProvider, blink::ServiceConnector is currently
thread-hostile. This should be easy to relax using similar mechanisms as
InterfaceProviderImpl.
- There is currently no API for obtaining an InterfaceProvider for a given
service (or a thread-safe wrapper, per the above comment). Again, this should
be easy to add.

This CL also moves the definition of the device service name to mojom instead
of C++ in order to facilitate using this constant from Blink.

BUG=612341
TEST=http://crbug.com/288697#c12: load the page, change the system time zone,
     and then click "recheck" to ensure that the renderer picks up the new
     time zone. Don't reload the page, which is likely to give you a new
     renderer process, use the "recheck" link on the page.

Committed: https://crrev.com/8e3745ac05d7918a91ff9efb02280a7c1443de5c
Review-Url: https://codereview.chromium.org/2460723003
Cr-Original-Commit-Position: refs/heads/master@{#439498}
Cr-Commit-Position: refs/heads/master@{#440419}

[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/content/browser/BUILD.gn
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/content/browser/DEPS
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/content/browser/browser_context.cc
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/content/browser/browser_main_loop.cc
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/content/browser/browser_main_loop.h
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/content/child/BUILD.gn
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/content/child/blink_platform_impl.cc
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/content/child/blink_platform_impl.h
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/content/public/app/mojo/content_renderer_manifest.json
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/services/device/BUILD.gn
[add] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/services/device/DEPS
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/services/device/device_service.cc
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/services/device/device_service.h
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/services/device/manifest.json
[delete] https://crrev.com/4aa30591e0953da7e0c54ffdb91856e496d16b5f/services/device/public/cpp/constants.cc
[delete] https://crrev.com/4aa30591e0953da7e0c54ffdb91856e496d16b5f/services/device/public/cpp/constants.h
[rename] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/services/device/public/interfaces/BUILD.gn
[add] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/services/device/public/interfaces/OWNERS
[add] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/services/device/public/interfaces/constants.mojom
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/third_party/WebKit/Source/modules/time_zone_monitor/BUILD.gn
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/third_party/WebKit/Source/modules/time_zone_monitor/DEPS
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/third_party/WebKit/Source/modules/time_zone_monitor/TimeZoneMonitorClient.cpp
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/third_party/WebKit/Source/platform/BUILD.gn
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/third_party/WebKit/Source/platform/DEPS
[add] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/third_party/WebKit/Source/platform/ServiceConnector.h
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/third_party/WebKit/Source/platform/exported/Platform.cpp
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/third_party/WebKit/public/platform/DEPS
[modify] https://crrev.com/32fc16c8f8cf5cba4a7bec4f6a18fcbdf32c5e3b/third_party/WebKit/public/platform/Platform.h

Project Member

Comment 12 by bugdroid1@chromium.org, Jan 13 2017

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

commit 577541d28891bae8f419183f7c73d79fc09060af
Author: leon.han <leon.han@intel.com>
Date: Fri Jan 13 05:02:57 2017

content_browser does not provide TimeZoneMonitor interface anymore.

device::mojom::TimeZoneMonitor has been changed to be hosted by Device Service,
so this CL removes it from content_browser manifest, and also removes
some unnecessary dependencies from content/.

BUG=612341

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

[modify] https://crrev.com/577541d28891bae8f419183f7c73d79fc09060af/content/public/app/mojo/content_browser_manifest.json
[modify] https://crrev.com/577541d28891bae8f419183f7c73d79fc09060af/content/renderer/DEPS
[modify] https://crrev.com/577541d28891bae8f419183f7c73d79fc09060af/content/renderer/mus/BUILD.gn

Labels: DeviceService
Blockedon: 689394
Components: Internals>Services>Device
Labels: Type-Task
Migrating S13N meta bugs to Type=Task, so that they can be distinguished from technical work.
Components: Internals>Services
Components: Internals>Services>ServiceManager
Bulk applying component Internals>Services>ServiceManager to issues referencing the text ServiceManager.  This may not be 100% accurate, so please feel free to pull the component as needed.

Comment 19 by js...@chromium.org, Nov 12 2017

Cc: js...@chromium.org

Sign in to add a comment