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/common/content_client.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/strings/string_piece.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image.h" 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "webkit/common/user_agent/user_agent.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static ContentClient* g_client; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class InternalTestInitializer { 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static ContentBrowserClient* SetBrowser(ContentBrowserClient* b) { 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ContentBrowserClient* rv = g_client->browser_; 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) g_client->browser_ = b; 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return rv; 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static ContentRendererClient* SetRenderer(ContentRendererClient* r) { 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ContentRendererClient* rv = g_client->renderer_; 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) g_client->renderer_ = r; 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return rv; 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch static ContentUtilityClient* SetUtility(ContentUtilityClient* u) { 317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ContentUtilityClient* rv = g_client->utility_; 327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch g_client->utility_ = u; 337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return rv; 347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetContentClient(ContentClient* client) { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) g_client = client; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set the default user agent as provided by the client. We need to make 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // sure this is done before webkit_glue::GetUserAgent() is called (so that 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the UA doesn't change). 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (client) { 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) webkit_glue::SetUserAgent(client->GetUserAgent(), false); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContentClient* GetContentClient() { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return g_client; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ContentBrowserClient* SetBrowserClientForTesting(ContentBrowserClient* b) { 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return InternalTestInitializer::SetBrowser(b); 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ContentRendererClient* SetRendererClientForTesting(ContentRendererClient* r) { 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return InternalTestInitializer::SetRenderer(r); 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 607dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochContentUtilityClient* SetUtilityClientForTesting(ContentUtilityClient* u) { 617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return InternalTestInitializer::SetUtility(u); 627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const std::string& GetUserAgent(const GURL& url) { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(g_client); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return webkit_glue::GetUserAgent(url); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContentClient::ContentClient() 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : browser_(NULL), plugin_(NULL), renderer_(NULL), utility_(NULL) { 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContentClient::~ContentClient() { 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool ContentClient::CanSendWhileSwappedOut(const IPC::Message* message) { 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ContentClient::CanHandleWhileSwappedOut(const IPC::Message& message) { 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string ContentClient::GetProduct() const { 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return std::string(); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string ContentClient::GetUserAgent() const { 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return std::string(); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)string16 ContentClient::GetLocalizedString(int message_id) const { 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return string16(); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)base::StringPiece ContentClient::GetDataResource( 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int resource_id, 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::ScaleFactor scale_factor) const { 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return base::StringPiece(); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)base::RefCountedStaticMemory* ContentClient::GetDataResourceBytes( 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int resource_id) const { 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Image& ContentClient::GetNativeImageNamed(int resource_id) const { 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CR_DEFINE_STATIC_LOCAL(gfx::Image, kEmptyImage, ()); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return kEmptyImage; 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)std::string ContentClient::GetProcessTypeNameInEnglish(int type) { 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NOTIMPLEMENTED(); 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return std::string(); 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) && !defined(OS_IOS) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ContentClient::GetSandboxProfileForSandboxType( 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int sandbox_type, 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int* sandbox_profile_resource_id) const { 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string ContentClient::GetCarbonInterposePath() const { 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return std::string(); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 130