New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 851905 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Task

Blocking:
issue 840722
issue 843554
issue 854493



Sign in to add a comment

Migrate away from sync IDs for Android tabs

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

Issue description

On Android, tab restore currently supports a concept of sync IDs, which is the mechanism sync uses to reassociate tabs (more precisely, placeholder tabs, i.e. ones without web contents) to the content in the sync model (e.g. directory).

The interface to expose local tabs to sync code, SyncedTabDelegate, in addition to supporting sync IDs, also supports tab session IDs, which historically have been ephemeral tab IDs used by session restore that must be invalidated across browser restarts (because they used to be recycled).

Recently, with crbug.com/823798, session IDs increase monotonically (i.e. are not reused across restarts) on all platforms. This means SyncedTabDelegate can now trivially guarantee that there will be no collisions across tabs (even across browser restarts) for tab IDs (exposed by SyncedTabDelegate::GetSessionId()).

In addition, tab restore on Android internally uses yet another tab IDs (Android IDs) that adhere to this monotonicity requirement, *AND* in addition get restored (i.e. a tab restored tab has the same ID as it did prior to the browser being closed).

This means, SyncedTabDelegate::GetSessionId() could trivially migrate to using Android tab IDs instead of actual session IDs. At this point, sync IDs would be unnecessary, because tab IDs themselves get restored and can be used to associate restored placeholder tabs with sync entities.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Jun 14 2018

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

commit 42c62276f6c54c5fd6e8142f4476568f03477243
Author: Mikel Astiz <mastiz@chromium.org>
Date: Thu Jun 14 10:16:48 2018

Avoid a proxy tab helper on Android for sync delegation

Prior to this patch, TabContentsSyncedTabDelegate was itself a tab
helper (WebContentsUserData) that was created on all platforms, with the
whole purpose to reuse a partial implementation of
sync_sessions::SyncedTabDelegate.

This was a bit weird because
a) The life cycle diverges across platforms: created lazily on Android,
   early otherwise.
b) On Android there was no real need to register a tab helper.
c) On Android, it's weird to reason about two tab delegates coexisting,
   one of which is a proxy but also overrides some logic.

Instead, let's make TabContentsSyncedTabDelegate a base class that is
*NOT* a WebContentsUserData, and let platform-specific subclasses
decide whether they want to register as WebContentsUserData, as well
as which logic they need to override.

This also removes code that is dead on some platforms, because the
base class is abtract and doesn't implements all methods (as opposed
to a proxy object which cannot be abstract).

Bug:  851905 
Change-Id: I305ad85e2392fdd2ce428c0464b7750ac599babf
Reviewed-on: https://chromium-review.googlesource.com/1097405
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567213}
[modify] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/media/android/remote/remote_media_player_manager.cc
[modify] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/media/android/router/media_router_android.cc
[modify] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/sync/glue/synced_tab_delegate_android.cc
[modify] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/sync/glue/synced_tab_delegate_android.h
[modify] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/sync/sessions/sync_sessions_router_tab_helper_unittest.cc
[modify] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/sync/sessions/sync_sessions_web_contents_router.cc
[modify] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/sync/sessions/sync_sessions_web_contents_router_unittest.cc
[modify] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/ui/BUILD.gn
[add] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/ui/sync/browser_synced_tab_delegate.cc
[add] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/ui/sync/browser_synced_tab_delegate.h
[modify] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/ui/sync/browser_synced_window_delegate.cc
[modify] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/ui/sync/tab_contents_synced_tab_delegate.cc
[modify] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/ui/sync/tab_contents_synced_tab_delegate.h
[modify] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/ui/sync/tab_contents_synced_tab_delegate_unittest.cc
[modify] https://crrev.com/42c62276f6c54c5fd6e8142f4476568f03477243/chrome/browser/ui/tab_helpers.cc

Project Member

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

Labels: merge-merged-3461
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f8abe95d41857461bd90e27d4725fff25047bb75

commit f8abe95d41857461bd90e27d4725fff25047bb75
Author: Mikel Astiz <mastiz@chromium.org>
Date: Fri Jun 15 15:27:03 2018

Revert "Avoid a proxy tab helper on Android for sync delegation"

This reverts commit 42c62276f6c54c5fd6e8142f4476568f03477243.

Reason for revert: suspect for browser crashes in canary as per
crbug.com/853049.

Original change's description:
> Avoid a proxy tab helper on Android for sync delegation
> 
> Prior to this patch, TabContentsSyncedTabDelegate was itself a tab
> helper (WebContentsUserData) that was created on all platforms, with the
> whole purpose to reuse a partial implementation of
> sync_sessions::SyncedTabDelegate.
> 
> This was a bit weird because
> a) The life cycle diverges across platforms: created lazily on Android,
>    early otherwise.
> b) On Android there was no real need to register a tab helper.
> c) On Android, it's weird to reason about two tab delegates coexisting,
>    one of which is a proxy but also overrides some logic.
> 
> Instead, let's make TabContentsSyncedTabDelegate a base class that is
> *NOT* a WebContentsUserData, and let platform-specific subclasses
> decide whether they want to register as WebContentsUserData, as well
> as which logic they need to override.
> 
> This also removes code that is dead on some platforms, because the
> base class is abtract and doesn't implements all methods (as opposed
> to a proxy object which cannot be abstract).
> 
> Bug:  851905 
> Change-Id: I305ad85e2392fdd2ce428c0464b7750ac599babf
> Reviewed-on: https://chromium-review.googlesource.com/1097405
> Commit-Queue: Mikel Astiz <mastiz@chromium.org>
> Reviewed-by: Avi Drissman <avi@chromium.org>
> Reviewed-by: Marc Treib <treib@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#567213}

TBR=avi@chromium.org,treib@chromium.org,mastiz@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug:  851905 ,853049
Change-Id: I71a78fa8fd50b551c5ae50cb64f1fe5e033383e5
Reviewed-on: https://chromium-review.googlesource.com/1101938
Reviewed-by: Alex Mineer <amineer@chromium.org>
Cr-Commit-Position: refs/branch-heads/3461@{#5}
Cr-Branched-From: c8a271c2b9964bd832b32a9a143f7bf28b658e70-refs/heads/master@{#567544}
[modify] https://crrev.com/f8abe95d41857461bd90e27d4725fff25047bb75/chrome/browser/media/android/remote/remote_media_player_manager.cc
[modify] https://crrev.com/f8abe95d41857461bd90e27d4725fff25047bb75/chrome/browser/media/android/router/media_router_android.cc
[modify] https://crrev.com/f8abe95d41857461bd90e27d4725fff25047bb75/chrome/browser/sync/glue/synced_tab_delegate_android.cc
[modify] https://crrev.com/f8abe95d41857461bd90e27d4725fff25047bb75/chrome/browser/sync/glue/synced_tab_delegate_android.h
[modify] https://crrev.com/f8abe95d41857461bd90e27d4725fff25047bb75/chrome/browser/sync/sessions/sync_sessions_router_tab_helper_unittest.cc
[modify] https://crrev.com/f8abe95d41857461bd90e27d4725fff25047bb75/chrome/browser/sync/sessions/sync_sessions_web_contents_router.cc
[modify] https://crrev.com/f8abe95d41857461bd90e27d4725fff25047bb75/chrome/browser/sync/sessions/sync_sessions_web_contents_router_unittest.cc
[modify] https://crrev.com/f8abe95d41857461bd90e27d4725fff25047bb75/chrome/browser/ui/BUILD.gn
[delete] https://crrev.com/8305e29ac803908c02a2eeabccb56f2908c0127d/chrome/browser/ui/sync/browser_synced_tab_delegate.cc
[delete] https://crrev.com/8305e29ac803908c02a2eeabccb56f2908c0127d/chrome/browser/ui/sync/browser_synced_tab_delegate.h
[modify] https://crrev.com/f8abe95d41857461bd90e27d4725fff25047bb75/chrome/browser/ui/sync/browser_synced_window_delegate.cc
[modify] https://crrev.com/f8abe95d41857461bd90e27d4725fff25047bb75/chrome/browser/ui/sync/tab_contents_synced_tab_delegate.cc
[modify] https://crrev.com/f8abe95d41857461bd90e27d4725fff25047bb75/chrome/browser/ui/sync/tab_contents_synced_tab_delegate.h
[modify] https://crrev.com/f8abe95d41857461bd90e27d4725fff25047bb75/chrome/browser/ui/sync/tab_contents_synced_tab_delegate_unittest.cc
[modify] https://crrev.com/f8abe95d41857461bd90e27d4725fff25047bb75/chrome/browser/ui/tab_helpers.cc

Project Member

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

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

commit 3476f410bff123a62a0542a6699f04f7536c38f8
Author: Mikel Astiz <mastiz@chromium.org>
Date: Fri Jun 15 15:51:22 2018

Revert "Avoid a proxy tab helper on Android for sync delegation"

This reverts commit 42c62276f6c54c5fd6e8142f4476568f03477243.

Reason for revert: suspect for browser crashes in canary as per
crbug.com/853049.

Original change's description:
> Avoid a proxy tab helper on Android for sync delegation
> 
> Prior to this patch, TabContentsSyncedTabDelegate was itself a tab
> helper (WebContentsUserData) that was created on all platforms, with the
> whole purpose to reuse a partial implementation of
> sync_sessions::SyncedTabDelegate.
> 
> This was a bit weird because
> a) The life cycle diverges across platforms: created lazily on Android,
>    early otherwise.
> b) On Android there was no real need to register a tab helper.
> c) On Android, it's weird to reason about two tab delegates coexisting,
>    one of which is a proxy but also overrides some logic.
> 
> Instead, let's make TabContentsSyncedTabDelegate a base class that is
> *NOT* a WebContentsUserData, and let platform-specific subclasses
> decide whether they want to register as WebContentsUserData, as well
> as which logic they need to override.
> 
> This also removes code that is dead on some platforms, because the
> base class is abtract and doesn't implements all methods (as opposed
> to a proxy object which cannot be abstract).
> 
> Bug:  851905 
> Change-Id: I305ad85e2392fdd2ce428c0464b7750ac599babf
> Reviewed-on: https://chromium-review.googlesource.com/1097405
> Commit-Queue: Mikel Astiz <mastiz@chromium.org>
> Reviewed-by: Avi Drissman <avi@chromium.org>
> Reviewed-by: Marc Treib <treib@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#567213}

TBR=avi@chromium.org,treib@chromium.org,mastiz@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug:  851905 ,853049
Change-Id: I71a78fa8fd50b551c5ae50cb64f1fe5e033383e5
Reviewed-on: https://chromium-review.googlesource.com/1102537
Reviewed-by: Mikel Astiz <mastiz@chromium.org>
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567662}
[modify] https://crrev.com/3476f410bff123a62a0542a6699f04f7536c38f8/chrome/browser/media/android/remote/remote_media_player_manager.cc
[modify] https://crrev.com/3476f410bff123a62a0542a6699f04f7536c38f8/chrome/browser/media/android/router/media_router_android.cc
[modify] https://crrev.com/3476f410bff123a62a0542a6699f04f7536c38f8/chrome/browser/sync/glue/synced_tab_delegate_android.cc
[modify] https://crrev.com/3476f410bff123a62a0542a6699f04f7536c38f8/chrome/browser/sync/glue/synced_tab_delegate_android.h
[modify] https://crrev.com/3476f410bff123a62a0542a6699f04f7536c38f8/chrome/browser/sync/sessions/sync_sessions_router_tab_helper_unittest.cc
[modify] https://crrev.com/3476f410bff123a62a0542a6699f04f7536c38f8/chrome/browser/sync/sessions/sync_sessions_web_contents_router.cc
[modify] https://crrev.com/3476f410bff123a62a0542a6699f04f7536c38f8/chrome/browser/sync/sessions/sync_sessions_web_contents_router_unittest.cc
[modify] https://crrev.com/3476f410bff123a62a0542a6699f04f7536c38f8/chrome/browser/ui/BUILD.gn
[delete] https://crrev.com/fb26394ee48ecccf0a00f38120a6130c1f71aa33/chrome/browser/ui/sync/browser_synced_tab_delegate.cc
[delete] https://crrev.com/fb26394ee48ecccf0a00f38120a6130c1f71aa33/chrome/browser/ui/sync/browser_synced_tab_delegate.h
[modify] https://crrev.com/3476f410bff123a62a0542a6699f04f7536c38f8/chrome/browser/ui/sync/browser_synced_window_delegate.cc
[modify] https://crrev.com/3476f410bff123a62a0542a6699f04f7536c38f8/chrome/browser/ui/sync/tab_contents_synced_tab_delegate.cc
[modify] https://crrev.com/3476f410bff123a62a0542a6699f04f7536c38f8/chrome/browser/ui/sync/tab_contents_synced_tab_delegate.h
[modify] https://crrev.com/3476f410bff123a62a0542a6699f04f7536c38f8/chrome/browser/ui/sync/tab_contents_synced_tab_delegate_unittest.cc
[modify] https://crrev.com/3476f410bff123a62a0542a6699f04f7536c38f8/chrome/browser/ui/tab_helpers.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Jun 18 2018

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

commit ce816173fa6a8a13b07aa007a26b20907e4d6412
Author: Mikel Astiz <mastiz@chromium.org>
Date: Mon Jun 18 11:08:48 2018

Reland "Avoid a proxy tab helper on Android for sync delegation"

This is a reland of 42c62276f6c54c5fd6e8142f4476568f03477243

The underlying issue in SyncedTabDelegateAndroid::GetSessionId()
has been reverted, which introduced an accidental behavioral
difference in the original version, causing crashes on Android
for placeholder tabs (i.e. tabs without WebContents).

TBR=avi@chromium.org,treib@chromium.org

Original change's description:
> Avoid a proxy tab helper on Android for sync delegation
>
> Prior to this patch, TabContentsSyncedTabDelegate was itself a tab
> helper (WebContentsUserData) that was created on all platforms, with the
> whole purpose to reuse a partial implementation of
> sync_sessions::SyncedTabDelegate.
>
> This was a bit weird because
> a) The life cycle diverges across platforms: created lazily on Android,
>    early otherwise.
> b) On Android there was no real need to register a tab helper.
> c) On Android, it's weird to reason about two tab delegates coexisting,
>    one of which is a proxy but also overrides some logic.
>
> Instead, let's make TabContentsSyncedTabDelegate a base class that is
> *NOT* a WebContentsUserData, and let platform-specific subclasses
> decide whether they want to register as WebContentsUserData, as well
> as which logic they need to override.
>
> This also removes code that is dead on some platforms, because the
> base class is abtract and doesn't implements all methods (as opposed
> to a proxy object which cannot be abstract).
>
> Bug:  851905 
> Change-Id: I305ad85e2392fdd2ce428c0464b7750ac599babf
> Reviewed-on: https://chromium-review.googlesource.com/1097405
> Commit-Queue: Mikel Astiz <mastiz@chromium.org>
> Reviewed-by: Avi Drissman <avi@chromium.org>
> Reviewed-by: Marc Treib <treib@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#567213}

Bug:  851905 
Change-Id: I9e060ecf1272fec1ceebd4353fd390b95e64b669
Reviewed-on: https://chromium-review.googlesource.com/1103717
Reviewed-by: Mikel Astiz <mastiz@chromium.org>
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567966}
[modify] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/media/android/remote/remote_media_player_manager.cc
[modify] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/media/android/router/media_router_android.cc
[modify] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/sync/glue/synced_tab_delegate_android.cc
[modify] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/sync/glue/synced_tab_delegate_android.h
[modify] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/sync/sessions/sync_sessions_router_tab_helper_unittest.cc
[modify] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/sync/sessions/sync_sessions_web_contents_router.cc
[modify] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/sync/sessions/sync_sessions_web_contents_router_unittest.cc
[modify] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/ui/BUILD.gn
[add] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/ui/sync/browser_synced_tab_delegate.cc
[add] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/ui/sync/browser_synced_tab_delegate.h
[modify] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/ui/sync/browser_synced_window_delegate.cc
[modify] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/ui/sync/tab_contents_synced_tab_delegate.cc
[modify] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/ui/sync/tab_contents_synced_tab_delegate.h
[modify] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/ui/sync/tab_contents_synced_tab_delegate_unittest.cc
[modify] https://crrev.com/ce816173fa6a8a13b07aa007a26b20907e4d6412/chrome/browser/ui/tab_helpers.cc

Project Member

Comment 6 by bugdroid1@chromium.org, Jun 19 2018

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

commit 3308e2e3e37e369b68b09bc82a9df4f7c78af6d0
Author: Mikel Astiz <mastiz@chromium.org>
Date: Tue Jun 19 19:08:42 2018

Migrate from sync IDs to Android tab IDs

Intrusive patch that migrates session sync on Android to identify
tabs by a new ID type: Android tab IDs. No direct user-facing
changes expected except a) improved robustness due to reduced data
redundancy, and b) a one-off loss of placeholder tabs (because no
migration path is implemented) in "Tabs from other devices".

Design doc (Google employees only):
https://docs.google.com/document/d/1gMtPXTmvKnhJQpzSLYNoqBajWtOGYAoBNQ74XmmFe7I

The proposed change is feasible after, recently with
crbug.com/823798, session IDs increase monotonically (i.e. are not
reused across restarts) on all platforms. This means
SyncedTabDelegate can now trivially guarantee that there will be no
collisions (even across browser restarts) across tab IDs (exposed by
SyncedTabDelegate::GetSessionId()), as documented in this patch.

On Android, there's yet another concept of tab IDs which adheres to
that property and in addition get restored. By migrating to these IDs
altogether (i.e. only expose Android tab IDs to sync), there's no need
to support sync IDs at all, because the whole purpose of sync IDs is to
be able to associate open placeholder tabs (without web contents
loaded).

Hence, let's simplify the code and avoid all issues related to data
redundancy.

Bug:  851905 , 843554 
Cq-Include-Trybots: luci.chromium.try:ios-simulator-full-configs;master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: Icda054906e654c18238b47e7788d4523790e09f3
Reviewed-on: https://chromium-review.googlesource.com/1096942
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Reviewed-by: Yusuf Ozuysal <yusufo@chromium.org>
Reviewed-by: Bernhard Bauer <bauerb@chromium.org>
Reviewed-by: Brian White <bcwhite@chromium.org>
Reviewed-by: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#568555}
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/android/java/src/org/chromium/chrome/browser/TabState.java
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/android/junit/src/org/chromium/chrome/browser/tabstate/TabStateUnitTest.java
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/OpenTabsTest.java
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/android/tab_android.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/android/tab_android.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/sync/glue/synced_tab_delegate_android.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/sync/glue/synced_tab_delegate_android.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/ui/sync/browser_synced_tab_delegate.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/ui/sync/browser_synced_tab_delegate.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/ui/sync/browser_synced_window_delegate.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/ui/sync/tab_contents_synced_tab_delegate.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/ui/sync/tab_contents_synced_tab_delegate.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/ui/sync/tab_contents_synced_tab_delegate_unittest.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/local_session_event_handler_impl.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/local_session_event_handler_impl.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/local_session_event_handler_impl_unittest.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/session_sync_bridge_unittest.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/sessions_sync_manager_unittest.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/synced_tab_delegate.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/test_synced_window_delegates_getter.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/test_synced_window_delegates_getter.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/ios/chrome/browser/sync/ios_chrome_synced_tab_delegate.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/ios/chrome/browser/sync/ios_chrome_synced_tab_delegate.mm
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/tools/metrics/histograms/histograms.xml

Comment 7 by mastiz@chromium.org, Jun 20 2018

Status: Fixed (was: Started)

Comment 8 by mastiz@chromium.org, Jun 20 2018

Blocking: 854493

Sign in to add a comment