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/shell/common/shell_content_client.h"
6
7#include "base/command_line.h"
8#include "base/strings/string_piece.h"
9#include "base/strings/utf_string_conversions.h"
10#include "content/public/common/content_switches.h"
11#include "content/shell/common/shell_switches.h"
12#include "grit/shell_resources.h"
13#include "grit/webkit_resources.h"
14#include "grit/webkit_strings.h"
15#include "ui/base/l10n/l10n_util.h"
16#include "ui/base/resource/resource_bundle.h"
17#include "webkit/common/user_agent/user_agent_util.h"
18
19namespace content {
20
21ShellContentClient::~ShellContentClient() {
22}
23
24std::string ShellContentClient::GetUserAgent() const {
25  std::string product = "Chrome/" CONTENT_SHELL_VERSION;
26  CommandLine* command_line = CommandLine::ForCurrentProcess();
27  if (command_line->HasSwitch(switches::kUseMobileUserAgent))
28    product += " Mobile";
29  return webkit_glue::BuildUserAgentFromProduct(product);
30}
31
32base::string16 ShellContentClient::GetLocalizedString(int message_id) const {
33  if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree)) {
34    switch (message_id) {
35      case IDS_FORM_OTHER_DATE_LABEL:
36        return ASCIIToUTF16("<<OtherDateLabel>>");
37      case IDS_FORM_OTHER_MONTH_LABEL:
38        return ASCIIToUTF16("<<OtherMonthLabel>>");
39      case IDS_FORM_OTHER_TIME_LABEL:
40        return ASCIIToUTF16("<<OtherTimeLabel>>");
41      case IDS_FORM_OTHER_WEEK_LABEL:
42        return ASCIIToUTF16("<<OtherWeekLabel>>");
43      case IDS_FORM_CALENDAR_CLEAR:
44        return ASCIIToUTF16("<<CalendarClear>>");
45      case IDS_FORM_CALENDAR_TODAY:
46        return ASCIIToUTF16("<<CalendarToday>>");
47      case IDS_FORM_THIS_MONTH_LABEL:
48        return ASCIIToUTF16("<<ThisMonthLabel>>");
49      case IDS_FORM_THIS_WEEK_LABEL:
50        return ASCIIToUTF16("<<ThisWeekLabel>>");
51    }
52  }
53  return l10n_util::GetStringUTF16(message_id);
54}
55
56base::StringPiece ShellContentClient::GetDataResource(
57    int resource_id,
58    ui::ScaleFactor scale_factor) const {
59  if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree)) {
60    switch (resource_id) {
61      case IDR_BROKENIMAGE:
62#if defined(OS_MACOSX)
63        resource_id = IDR_CONTENT_SHELL_MISSING_IMAGE_PNG;
64#else
65        resource_id = IDR_CONTENT_SHELL_MISSING_IMAGE_GIF;
66#endif
67        break;
68
69      case IDR_TEXTAREA_RESIZER:
70        resource_id = IDR_CONTENT_SHELL_TEXT_AREA_RESIZE_CORNER_PNG;
71        break;
72    }
73  }
74  return ResourceBundle::GetSharedInstance().GetRawDataResourceForScale(
75      resource_id, scale_factor);
76}
77
78base::RefCountedStaticMemory* ShellContentClient::GetDataResourceBytes(
79    int resource_id) const {
80  return ResourceBundle::GetSharedInstance().LoadDataResourceBytes(resource_id);
81}
82
83gfx::Image& ShellContentClient::GetNativeImageNamed(int resource_id) const {
84  return ResourceBundle::GetSharedInstance().GetNativeImageNamed(resource_id);
85}
86
87}  // namespace content
88