content_client.cc revision a3f7b4e666c476898878fa745f637129375cd889
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
12namespace content {
13
14static ContentClient* g_client;
15
16class InternalTestInitializer {
17 public:
18  static ContentBrowserClient* SetBrowser(ContentBrowserClient* b) {
19    ContentBrowserClient* rv = g_client->browser_;
20    g_client->browser_ = b;
21    return rv;
22  }
23
24  static ContentRendererClient* SetRenderer(ContentRendererClient* r) {
25    ContentRendererClient* rv = g_client->renderer_;
26    g_client->renderer_ = r;
27    return rv;
28  }
29
30  static ContentUtilityClient* SetUtility(ContentUtilityClient* u) {
31    ContentUtilityClient* rv = g_client->utility_;
32    g_client->utility_ = u;
33    return rv;
34  }
35};
36
37void SetContentClient(ContentClient* client) {
38  g_client = client;
39
40  // Set the default user agent as provided by the client. We need to make
41  // sure this is done before webkit_glue::GetUserAgent() is called (so that
42  // the UA doesn't change).
43  if (client) {
44    webkit_glue::SetUserAgent(client->GetUserAgent(), false);
45  }
46}
47
48ContentClient* GetContentClient() {
49  return g_client;
50}
51
52ContentBrowserClient* SetBrowserClientForTesting(ContentBrowserClient* b) {
53  return InternalTestInitializer::SetBrowser(b);
54}
55
56ContentRendererClient* SetRendererClientForTesting(ContentRendererClient* r) {
57  return InternalTestInitializer::SetRenderer(r);
58}
59
60ContentUtilityClient* SetUtilityClientForTesting(ContentUtilityClient* u) {
61  return InternalTestInitializer::SetUtility(u);
62}
63
64const std::string& GetUserAgent(const GURL& url) {
65  DCHECK(g_client);
66  return webkit_glue::GetUserAgent(url);
67}
68
69ContentClient::ContentClient()
70    : browser_(NULL), plugin_(NULL), renderer_(NULL), utility_(NULL) {
71}
72
73ContentClient::~ContentClient() {
74}
75
76bool ContentClient::CanSendWhileSwappedOut(const IPC::Message* message) {
77  return false;
78}
79
80bool ContentClient::CanHandleWhileSwappedOut(const IPC::Message& message) {
81  return false;
82}
83
84std::string ContentClient::GetProduct() const {
85  return std::string();
86}
87
88std::string ContentClient::GetUserAgent() const {
89  return std::string();
90}
91
92string16 ContentClient::GetLocalizedString(int message_id) const {
93  return string16();
94}
95
96base::StringPiece ContentClient::GetDataResource(
97    int resource_id,
98    ui::ScaleFactor scale_factor) const {
99  return base::StringPiece();
100}
101
102base::RefCountedStaticMemory* ContentClient::GetDataResourceBytes(
103    int resource_id) const {
104  return NULL;
105}
106
107gfx::Image& ContentClient::GetNativeImageNamed(int resource_id) const {
108  CR_DEFINE_STATIC_LOCAL(gfx::Image, kEmptyImage, ());
109  return kEmptyImage;
110}
111
112std::string ContentClient::GetProcessTypeNameInEnglish(int type) {
113  NOTIMPLEMENTED();
114  return std::string();
115}
116
117#if defined(OS_MACOSX) && !defined(OS_IOS)
118bool ContentClient::GetSandboxProfileForSandboxType(
119    int sandbox_type,
120    int* sandbox_profile_resource_id) const {
121  return false;
122}
123
124std::string ContentClient::GetCarbonInterposePath() const {
125  return std::string();
126}
127#endif
128
129}  // namespace content
130