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