1// Copyright 2014 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. 4 5#include "components/renderer_context_menu/context_menu_delegate.h" 6 7#include "content/public/browser/web_contents.h" 8 9namespace { 10 11const char kMenuDelegateUserDataKey[] = "RendererContextMenuMenuDelegate"; 12 13class ContextMenuDelegateUserData : public base::SupportsUserData::Data { 14 public: 15 explicit ContextMenuDelegateUserData(ContextMenuDelegate* menu_delegate) 16 : menu_delegate_(menu_delegate) {} 17 virtual ~ContextMenuDelegateUserData() {} 18 ContextMenuDelegate* menu_delegate() { return menu_delegate_; } 19 20 private: 21 ContextMenuDelegate* menu_delegate_; // not owned by us. 22}; 23 24} // namespace 25 26ContextMenuDelegate::ContextMenuDelegate(content::WebContents* web_contents) { 27 web_contents->SetUserData(&kMenuDelegateUserDataKey, 28 new ContextMenuDelegateUserData(this)); 29} 30 31ContextMenuDelegate::~ContextMenuDelegate() { 32} 33 34// static 35ContextMenuDelegate* ContextMenuDelegate::FromWebContents( 36 content::WebContents* web_contents) { 37 ContextMenuDelegateUserData* user_data = 38 static_cast<ContextMenuDelegateUserData*>( 39 web_contents->GetUserData(&kMenuDelegateUserDataKey)); 40 return user_data ? user_data->menu_delegate() : NULL; 41} 42