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/public/browser/web_contents_delegate.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/singleton.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/render_view_host.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/url_constants.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/bindings_policy.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebContentsDelegate::WebContentsDelegate() { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebContents* WebContentsDelegate::OpenURLFromTab(WebContents* source, 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const OpenURLParams& params) { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebContentsDelegate::IsPopupOrPanel(const WebContents* source) const { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool WebContentsDelegate::CanOverscrollContent() const { return false; } 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Rect WebContentsDelegate::GetRootWindowResizerRect() const { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return gfx::Rect(); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebContentsDelegate::ShouldSuppressDialogs() { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochbool WebContentsDelegate::ShouldPreserveAbortedURLs(WebContents* source) { 410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch return false; 420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebContentsDelegate::AddMessageToConsole(WebContents* source, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 level, 46a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& message, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 line_no, 48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& source_id) { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsDelegate::BeforeUnloadFired(WebContents* web_contents, 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool proceed, 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool* proceed_to_fire_unload) { 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *proceed_to_fire_unload = true; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool WebContentsDelegate::ShouldFocusLocationBarByDefault(WebContents* source) { 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebContentsDelegate::ShouldFocusPageAfterCrash() { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool WebContentsDelegate::TakeFocus(WebContents* source, bool reverse) { 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int WebContentsDelegate::GetExtraRenderViewHeight() const { 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void WebContentsDelegate::CanDownload( 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) RenderViewHost* render_view_host, 76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const GURL& url, 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& request_method, 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::Callback<void(bool)>& callback) { 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) callback.Run(true); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebContentsDelegate::HandleContextMenu( 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::ContextMenuParams& params) { 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsDelegate::ViewSourceForTab(WebContents* source, 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& page_url) { 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Fall back implementation based entirely on the view-source scheme. 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // It suffers from http://crbug.com/523 and that is why browser overrides 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // it with proper implementation. 92868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) GURL url = GURL(kViewSourceScheme + std::string(":") + page_url.spec()); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OpenURLFromTab(source, OpenURLParams(url, Referrer(), 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NEW_FOREGROUND_TAB, 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ui::PAGE_TRANSITION_LINK, false)); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsDelegate::ViewSourceForFrame(WebContents* source, 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& frame_url, 10090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const PageState& page_state) { 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Same as ViewSourceForTab, but for given subframe. 102868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) GURL url = GURL(kViewSourceScheme + std::string(":") + frame_url.spec()); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OpenURLFromTab(source, OpenURLParams(url, Referrer(), 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NEW_FOREGROUND_TAB, 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ui::PAGE_TRANSITION_LINK, false)); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebContentsDelegate::PreHandleKeyboardEvent( 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContents* source, 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NativeWebKeyboardEvent& event, 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool* is_keyboard_shortcut) { 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool WebContentsDelegate::PreHandleGestureEvent( 1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) WebContents* source, 1175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const blink::WebGestureEvent& event) { 1185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)bool WebContentsDelegate::CanDragEnter( 1227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) WebContents* source, 123eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const DropData& data, 124f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDragOperationsMask operations_allowed) { 1257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return true; 1267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 1277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebContentsDelegate::OnGoToEntryOffset(int offset) { 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebContentsDelegate::ShouldCreateWebContents( 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContents* web_contents, 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int route_id, 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowContainerType window_container_type, 136a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& frame_name, 1377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const GURL& target_url, 1383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& partition_id, 1393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) SessionStorageNamespace* session_storage_namespace) { 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)JavaScriptDialogManager* WebContentsDelegate::GetJavaScriptDialogManager() { 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 147d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)bool WebContentsDelegate::EmbedsFullscreenWidget() const { 148d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return false; 149d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} 150d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebContentsDelegate::IsFullscreenForTabOrPending( 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const WebContents* web_contents) const { 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)content::ColorChooser* WebContentsDelegate::OpenColorChooser( 157a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) WebContents* web_contents, 158a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) SkColor color, 159a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const std::vector<ColorSuggestion>& suggestions) { 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void WebContentsDelegate::RequestMediaAccessPermission( 16458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) WebContents* web_contents, 16558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const MediaStreamRequest& request, 16658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const MediaResponseCallback& callback) { 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LOG(ERROR) << "WebContentsDelegate::RequestMediaAccessPermission: " 1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci << "Not supported."; 169a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) callback.Run(MediaStreamDevices(), 1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci MEDIA_DEVICE_NOT_SUPPORTED, 171a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr<MediaStreamUI>()); 17258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 17358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool WebContentsDelegate::CheckMediaAccessPermission( 1751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci WebContents* web_contents, 1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const GURL& security_origin, 1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci MediaStreamType type) { 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LOG(ERROR) << "WebContentsDelegate::CheckMediaAccessPermission: " 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci << "Not supported."; 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return false; 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool WebContentsDelegate::RequestPpapiBrokerPermission( 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContents* web_contents, 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& url, 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& plugin_path, 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::Callback<void(bool)>& callback) { 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebContentsDelegate::~WebContentsDelegate() { 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (!attached_contents_.empty()) { 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContents* web_contents = *attached_contents_.begin(); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_contents->SetDelegate(NULL); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(attached_contents_.empty()); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsDelegate::Attach(WebContents* web_contents) { 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(attached_contents_.find(web_contents) == attached_contents_.end()); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) attached_contents_.insert(web_contents); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebContentsDelegate::Detach(WebContents* web_contents) { 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(attached_contents_.find(web_contents) != attached_contents_.end()); 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) attached_contents_.erase(web_contents); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 209424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)gfx::Size WebContentsDelegate::GetSizeForNewRenderView( 210010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) WebContents* web_contents) const { 211424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return gfx::Size(); 212424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 213424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 2140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochbool WebContentsDelegate::IsNeverVisible(WebContents* web_contents) { 2150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch return false; 2160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 2170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 219