content_client.cc revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
1f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org// Use of this source code is governed by a BSD-style license that can be 3f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org// found in the LICENSE file. 4f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 59862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org#include "content/public/common/content_client.h" 6f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 7f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org#include "base/logging.h" 8f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org#include "base/strings/string_piece.h" 9f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org#include "ui/gfx/image/image.h" 10f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org#include "webkit/common/user_agent/user_agent.h" 11f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 12f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgnamespace content { 13f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 14f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgstatic ContentClient* g_client; 15f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 16f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgclass InternalTestInitializer { 17f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org public: 18f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org static ContentBrowserClient* SetBrowser(ContentBrowserClient* b) { 19f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org ContentBrowserClient* rv = g_client->browser_; 20f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org g_client->browser_ = b; 21f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return rv; 22f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org } 23f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 24f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org static ContentRendererClient* SetRenderer(ContentRendererClient* r) { 25f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org ContentRendererClient* rv = g_client->renderer_; 26f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org g_client->renderer_ = r; 27f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return rv; 28f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org } 29f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 30f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org static ContentUtilityClient* SetUtility(ContentUtilityClient* u) { 31f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org ContentUtilityClient* rv = g_client->utility_; 32f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org g_client->utility_ = u; 33f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return rv; 34f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org } 35f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org}; 36f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 37f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgvoid SetContentClient(ContentClient* client) { 38f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org g_client = client; 39f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 40f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org // Set the default user agent as provided by the client. We need to make 41f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org // sure this is done before webkit_glue::GetUserAgent() is called (so that 42f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org // the UA doesn't change). 43f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org if (client) { 44f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org webkit_glue::SetUserAgent(client->GetUserAgent(), false); 45f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org } 46f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 47f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 48f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgContentClient* GetContentClient() { 49f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return g_client; 50f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 51f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 52f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgContentBrowserClient* SetBrowserClientForTesting(ContentBrowserClient* b) { 53f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return InternalTestInitializer::SetBrowser(b); 54f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 55f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 56f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgContentRendererClient* SetRendererClientForTesting(ContentRendererClient* r) { 57f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return InternalTestInitializer::SetRenderer(r); 58f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 59f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 60f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgContentUtilityClient* SetUtilityClientForTesting(ContentUtilityClient* u) { 61f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return InternalTestInitializer::SetUtility(u); 62f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 63f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 64f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgconst std::string& GetUserAgent(const GURL& url) { 65f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org DCHECK(g_client); 66f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return webkit_glue::GetUserAgent(url); 679862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org} 68f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 699862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.orgContentClient::ContentClient() 709862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org : browser_(NULL), plugin_(NULL), renderer_(NULL), utility_(NULL) { 719862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org} 729862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org 73f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgContentClient::~ContentClient() { 74f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 75f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 76f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgbool ContentClient::CanSendWhileSwappedOut(const IPC::Message* message) { 77f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return false; 78f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 799862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org 809862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.orgbool ContentClient::CanHandleWhileSwappedOut(const IPC::Message& message) { 819862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org return false; 829862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org} 839862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org 849862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.orgstd::string ContentClient::GetProduct() const { 859862697206250265c6bb37a4186b0a411c78de3bhbono@chromium.org return std::string(); 86f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 87f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 88f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgstd::string ContentClient::GetUserAgent() const { 89f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return std::string(); 90f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 91f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 92f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgbase::string16 ContentClient::GetLocalizedString(int message_id) const { 93f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return base::string16(); 94f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 95f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 96f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgbase::StringPiece ContentClient::GetDataResource( 97f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org int resource_id, 98f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org ui::ScaleFactor scale_factor) const { 99f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return base::StringPiece(); 100f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 101f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 102f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgbase::RefCountedStaticMemory* ContentClient::GetDataResourceBytes( 103f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org int resource_id) const { 104f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return NULL; 105f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 106f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 107f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orggfx::Image& ContentClient::GetNativeImageNamed(int resource_id) const { 108f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org CR_DEFINE_STATIC_LOCAL(gfx::Image, kEmptyImage, ()); 109f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return kEmptyImage; 110f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 111f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 112f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgstd::string ContentClient::GetProcessTypeNameInEnglish(int type) { 113f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org NOTIMPLEMENTED(); 114f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return std::string(); 115f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 116f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 117f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org#if defined(OS_MACOSX) && !defined(OS_IOS) 118f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgbool ContentClient::GetSandboxProfileForSandboxType( 119f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org int sandbox_type, 120f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org int* sandbox_profile_resource_id) const { 121f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return false; 122f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 123f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 124f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.orgstd::string ContentClient::GetCarbonInterposePath() const { 125f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org return std::string(); 126f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} 127f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org#endif 128f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org 129f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org} // namespace content 130f0c4f33a4aa0760ba0e12a254b69d996442c9c5hbono@chromium.org