This bug is to track the refactoring of CastSocket::Observer API. The goal is to remove an extra copy operation for app messages from the receiver to the SDK.
The following changes:
- CastSocket::Observer should be tracked on each CastSocket instead of on CastSocketService. This allows us to remove the const CastSocket& parameter in the Observer APIs.
- If Cast MRP is the sole observer for each CastSocket, it should be able to move (instead of copy) the contents of a CastMessage. This allows us to remove an extra copy operation. This may require removing the use of chrome.cast.channel.{onMessage,onError} by the MR extension.