Remove legacy version of the control channel protocol.
[chromium-blink-merge.git] / android_webview / browser / aw_contents_client_bridge_base.cc
blobffd7160fe0efece7e6776b0c4f501b85a9155e71
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "android_webview/browser/aw_contents_client_bridge_base.h"
7 #include "content/public/browser/browser_thread.h"
8 #include "content/public/browser/render_frame_host.h"
9 #include "content/public/browser/web_contents.h"
11 using content::BrowserThread;
12 using content::WebContents;
14 namespace android_webview {
16 namespace {
18 const void* kAwContentsClientBridgeBase = &kAwContentsClientBridgeBase;
20 // This class is invented so that the UserData registry that we inject the
21 // AwContentsClientBridgeBase object does not own and destroy it.
22 class UserData : public base::SupportsUserData::Data {
23 public:
24 static AwContentsClientBridgeBase* GetContents(
25 content::WebContents* web_contents) {
26 if (!web_contents)
27 return NULL;
28 UserData* data = reinterpret_cast<UserData*>(
29 web_contents->GetUserData(kAwContentsClientBridgeBase));
30 return data ? data->contents_ : NULL;
33 explicit UserData(AwContentsClientBridgeBase* ptr) : contents_(ptr) {}
34 private:
35 AwContentsClientBridgeBase* contents_;
37 DISALLOW_COPY_AND_ASSIGN(UserData);
40 } // namespace
42 // static
43 void AwContentsClientBridgeBase::Associate(
44 WebContents* web_contents,
45 AwContentsClientBridgeBase* handler) {
46 web_contents->SetUserData(kAwContentsClientBridgeBase,
47 new UserData(handler));
50 void AwContentsClientBridgeBase::Disassociate(
51 WebContents* web_contents) {
52 web_contents->RemoveUserData(kAwContentsClientBridgeBase);
55 // static
56 AwContentsClientBridgeBase* AwContentsClientBridgeBase::FromWebContents(
57 WebContents* web_contents) {
58 return UserData::GetContents(web_contents);
61 // static
62 AwContentsClientBridgeBase* AwContentsClientBridgeBase::FromID(
63 int render_process_id,
64 int render_frame_id) {
65 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
66 content::RenderFrameHost* rfh =
67 content::RenderFrameHost::FromID(render_process_id, render_frame_id);
68 content::WebContents* web_contents =
69 content::WebContents::FromRenderFrameHost(rfh);
70 return UserData::GetContents(web_contents);
73 AwContentsClientBridgeBase::~AwContentsClientBridgeBase() {
76 } // namespace android_webview