Home | History | Annotate | Download | only in tab_contents
      1 // Copyright (c) 2012 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 "chrome/browser/ui/android/tab_contents/chrome_web_contents_view_delegate_android.h"
      6 
      7 #include "base/logging.h"
      8 #include "chrome/browser/ui/android/context_menu_helper.h"
      9 #include "content/public/browser/android/content_view_core.h"
     10 #include "content/public/browser/web_contents.h"
     11 #include "content/public/browser/web_contents_view_delegate.h"
     12 #include "content/public/common/context_menu_params.h"
     13 
     14 ChromeWebContentsViewDelegateAndroid::ChromeWebContentsViewDelegateAndroid(
     15     content::WebContents* web_contents)
     16     : web_contents_(web_contents) {
     17 }
     18 
     19 ChromeWebContentsViewDelegateAndroid::~ChromeWebContentsViewDelegateAndroid() {
     20 }
     21 
     22 content::WebDragDestDelegate*
     23 ChromeWebContentsViewDelegateAndroid::GetDragDestDelegate() {
     24   // GetDragDestDelegate is a pure virtual method from WebContentsViewDelegate
     25   // and must have an implementation although android doesn't use it.
     26   NOTREACHED();
     27   return NULL;
     28 }
     29 
     30 void ChromeWebContentsViewDelegateAndroid::ShowContextMenu(
     31     content::RenderFrameHost* render_frame_host,
     32     const content::ContextMenuParams& params) {
     33   // Display paste pop-up only when selection is empty and editable.
     34   if (params.is_editable && params.selection_text.empty()) {
     35     content::ContentViewCore* content_view_core =
     36         content::ContentViewCore::FromWebContents(web_contents_);
     37     if (content_view_core) {
     38       content_view_core->ShowPastePopup(params.selection_start.x(),
     39                                         params.selection_start.y());
     40       return;
     41     }
     42   }
     43 
     44   // TODO(dtrainor, kouhei): Give WebView a Populator/delegate so it can use the
     45   // same context menu code.
     46   ContextMenuHelper* helper = ContextMenuHelper::FromWebContents(web_contents_);
     47   if (helper)
     48     helper->ShowContextMenu(params);
     49 }
     50 
     51 namespace chrome {
     52 
     53 content::WebContentsViewDelegate* CreateWebContentsViewDelegate(
     54     content::WebContents* web_contents) {
     55   return new ChromeWebContentsViewDelegateAndroid(web_contents);
     56 }
     57 
     58 }  // namespace chrome
     59