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