15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/web_contents/web_contents_view_android.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/android/content_view_core_impl.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/renderer_host/render_widget_host_view_android.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/renderer_host/render_view_host_factory.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/renderer_host/render_view_host_impl.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/web_contents/interstitial_page_impl.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/web_contents/web_contents_impl.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents_delegate.h" 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "media/base/android/media_player_manager.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)WebContentsViewPort* CreateWebContentsView( 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsImpl* web_contents, 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsViewDelegate* delegate, 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewHostDelegateView** render_view_host_delegate_view) { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsViewAndroid* rv = new WebContentsViewAndroid( 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_contents, delegate); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *render_view_host_delegate_view = rv; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return rv; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebContentsViewAndroid::WebContentsViewAndroid( 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsImpl* web_contents, 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsViewDelegate* delegate) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : web_contents_(web_contents), 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content_view_core_(NULL), 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delegate_(delegate) { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebContentsViewAndroid::~WebContentsViewAndroid() { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::SetContentViewCore( 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentViewCoreImpl* content_view_core) { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content_view_core_ = content_view_core; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderWidgetHostViewAndroid* rwhv = static_cast<RenderWidgetHostViewAndroid*>( 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_contents_->GetRenderWidgetHostView()); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (rwhv) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rwhv->SetContentViewCore(content_view_core_); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (web_contents_->ShowingInterstitialPage()) { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rwhv = static_cast<RenderWidgetHostViewAndroid*>( 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static_cast<InterstitialPageImpl*>( 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_contents_->GetInterstitialPage())-> 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetRenderViewHost()->GetView()); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (rwhv) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rwhv->SetContentViewCore(content_view_core_); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(GOOGLE_TV) 58b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)void WebContentsViewAndroid::NotifyExternalSurface( 59b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int player_id, bool is_request, const gfx::RectF& rect) { 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (content_view_core_) 61b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) content_view_core_->NotifyExternalSurface(player_id, is_request, rect); 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::NativeView WebContentsViewAndroid::GetNativeView() const { 66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return content_view_core_ ? content_view_core_->GetViewAndroid() : NULL; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::NativeView WebContentsViewAndroid::GetContentNativeView() const { 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return content_view_core_ ? content_view_core_->GetViewAndroid() : NULL; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::NativeWindow WebContentsViewAndroid::GetTopLevelNativeWindow() const { 74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return content_view_core_ ? content_view_core_->GetWindowAndroid() : NULL; 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::GetContainerBounds(gfx::Rect* out) const { 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderWidgetHostView* rwhv = web_contents_->GetRenderWidgetHostView(); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (rwhv) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *out = rwhv->GetViewBounds(); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::SetPageTitle(const string16& title) { 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (content_view_core_) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content_view_core_->SetTitle(title); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::OnTabCrashed(base::TerminationStatus status, 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int error_code) { 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_contents_->GetRenderViewHost()); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (rvh->media_player_manager()) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rvh->media_player_manager()->DestroyAllMediaPlayers(); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (content_view_core_) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content_view_core_->OnTabCrashed(); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::SizeContents(const gfx::Size& size) { 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(klobag): Do we need to do anything else? 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderWidgetHostView* rwhv = web_contents_->GetRenderWidgetHostView(); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (rwhv) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rwhv->SetSize(size); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::Focus() { 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (web_contents_->ShowingInterstitialPage()) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_contents_->GetInterstitialPage()->Focus(); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_contents_->GetRenderWidgetHostView()->Focus(); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::SetInitialFocus() { 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (web_contents_->FocusLocationBarByDefault()) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_contents_->SetFocusToLocationBar(false); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Focus(); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::StoreFocus() { 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::RestoreFocus() { 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 127eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochDropData* WebContentsViewAndroid::GetDropData() const { 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Rect WebContentsViewAndroid::GetViewBounds() const { 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderWidgetHostView* rwhv = web_contents_->GetRenderWidgetHostView(); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (rwhv) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return rwhv->GetViewBounds(); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return gfx::Rect(); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void WebContentsViewAndroid::CreateView( 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Size& initial_size, gfx::NativeView context) { 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)RenderWidgetHostView* WebContentsViewAndroid::CreateViewForWidget( 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RenderWidgetHost* render_widget_host) { 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (render_widget_host->GetView()) { 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // During testing, the view will already be set up in most cases to the 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // test view, so we don't want to clobber it with a real one. To verify that 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // this actually is happening (and somebody isn't accidentally creating the 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // view twice), we check for the RVH Factory, which will be set when we're 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // making special ones (which go along with the special views). 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(RenderViewHostFactory::has_factory()); 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return render_widget_host->GetView(); 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Note that while this instructs the render widget host to reference 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |native_view_|, this has no effect without also instructing the 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // native view (i.e. ContentView) how to obtain a reference to this widget in 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // order to paint it. See ContentView::GetRenderWidgetHostViewAndroid for an 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // example of how this is achieved for InterstitialPages. 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(render_widget_host); 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RenderWidgetHostView* view = new RenderWidgetHostViewAndroid( 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) rwhi, content_view_core_); 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return view; 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)RenderWidgetHostView* WebContentsViewAndroid::CreateViewForPopupWidget( 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RenderWidgetHost* render_widget_host) { 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return RenderWidgetHostViewPort::CreateViewForWidget(render_widget_host); 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void WebContentsViewAndroid::RenderViewCreated(RenderViewHost* host) { 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void WebContentsViewAndroid::RenderViewSwappedIn(RenderViewHost* host) { 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void WebContentsViewAndroid::SetOverscrollControllerEnabled(bool enabled) { 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::ShowContextMenu( 1817d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const ContextMenuParams& params) { 182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (delegate_) 1837d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) delegate_->ShowContextMenu(params); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::ShowPopupMenu( 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& bounds, 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int item_height, 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double item_font_size, 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int selected_item, 1917dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::vector<MenuItem>& items, 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool right_aligned, 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool allow_multiple_selection) { 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (content_view_core_) { 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content_view_core_->ShowSelectPopupMenu( 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) items, selected_item, allow_multiple_selection); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::StartDragging( 201eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const DropData& drop_data, 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebDragOperationsMask allowed_ops, 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::ImageSkia& image, 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Vector2d& image_offset, 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const DragEventSourceInfo& event_info) { 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::UpdateDragCursor(WebKit::WebDragOperation op) { 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::GotFocus() { 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is only used in the views FocusManager stuff but it bleeds through 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // all subclasses. http://crbug.com/21875 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This is called when we the renderer asks us to take focus back (i.e., it has 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// iterated past the last focusable element on the page). 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsViewAndroid::TakeFocus(bool reverse) { 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (web_contents_->GetDelegate() && 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_contents_->GetDelegate()->TakeFocus(web_contents_, reverse)) 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_contents_->GetRenderWidgetHostView()->Focus(); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 228