DeviceSyncClient, when constructed, posts tasks to fetch its remote devices. This means that when clients of DeviceSyncClient first get the object, its GetSyncedDevices() and GetLocalDeviceMetadata() calls return empty. This means clients have to instrument some mechanism to wait for DeviceSyncClient to be ready.
This current state is fine for now and can be worked around easily enough, but in the future, as we serve external clients, it will need to be fixed. This issue is a little tricky because DeviceSyncClientFactory is tied to BrowserContextKeyedService logic, which is synchronous.
Comment 1 by zalcorn@chromium.org
, Sep 28