core_tab_helper.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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 "chrome/browser/ui/tab_contents/core_tab_helper.h"
6
7#include "chrome/browser/renderer_host/web_cache_manager.h"
8#include "chrome/browser/ui/tab_contents/tab_contents.h"
9#include "content/public/browser/render_process_host.h"
10#include "content/public/browser/render_view_host.h"
11#include "content/public/browser/web_contents.h"
12#include "net/base/load_states.h"
13#include "grit/generated_resources.h"
14#include "ui/base/l10n/l10n_util.h"
15
16using content::WebContents;
17
18DEFINE_WEB_CONTENTS_USER_DATA_KEY(CoreTabHelper)
19
20CoreTabHelper::CoreTabHelper(WebContents* web_contents)
21    : content::WebContentsObserver(web_contents),
22      delegate_(NULL) {
23}
24
25CoreTabHelper::~CoreTabHelper() {
26}
27
28string16 CoreTabHelper::GetDefaultTitle() {
29  return l10n_util::GetStringUTF16(IDS_DEFAULT_TAB_TITLE);
30}
31
32string16 CoreTabHelper::GetStatusText() const {
33  if (!web_contents()->IsLoading() ||
34      web_contents()->GetLoadState().state == net::LOAD_STATE_IDLE) {
35    return string16();
36  }
37
38  switch (web_contents()->GetLoadState().state) {
39    case net::LOAD_STATE_WAITING_FOR_DELEGATE:
40      return l10n_util::GetStringFUTF16(IDS_LOAD_STATE_WAITING_FOR_DELEGATE,
41                                        web_contents()->GetLoadState().param);
42    case net::LOAD_STATE_WAITING_FOR_CACHE:
43      return l10n_util::GetStringUTF16(IDS_LOAD_STATE_WAITING_FOR_CACHE);
44    case net::LOAD_STATE_WAITING_FOR_APPCACHE:
45      return l10n_util::GetStringUTF16(IDS_LOAD_STATE_WAITING_FOR_APPCACHE);
46    case net::LOAD_STATE_ESTABLISHING_PROXY_TUNNEL:
47      return
48          l10n_util::GetStringUTF16(IDS_LOAD_STATE_ESTABLISHING_PROXY_TUNNEL);
49    case net::LOAD_STATE_RESOLVING_PROXY_FOR_URL:
50      return l10n_util::GetStringUTF16(IDS_LOAD_STATE_RESOLVING_PROXY_FOR_URL);
51    case net::LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT:
52      return l10n_util::GetStringUTF16(
53          IDS_LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT);
54    case net::LOAD_STATE_RESOLVING_HOST:
55      return l10n_util::GetStringUTF16(IDS_LOAD_STATE_RESOLVING_HOST);
56    case net::LOAD_STATE_CONNECTING:
57      return l10n_util::GetStringUTF16(IDS_LOAD_STATE_CONNECTING);
58    case net::LOAD_STATE_SSL_HANDSHAKE:
59      return l10n_util::GetStringUTF16(IDS_LOAD_STATE_SSL_HANDSHAKE);
60    case net::LOAD_STATE_SENDING_REQUEST:
61      if (web_contents()->GetUploadSize()) {
62        return l10n_util::GetStringFUTF16Int(
63            IDS_LOAD_STATE_SENDING_REQUEST_WITH_PROGRESS,
64            static_cast<int>((100 * web_contents()->GetUploadPosition()) /
65                web_contents()->GetUploadSize()));
66      } else {
67        return l10n_util::GetStringUTF16(IDS_LOAD_STATE_SENDING_REQUEST);
68      }
69    case net::LOAD_STATE_WAITING_FOR_RESPONSE:
70      return l10n_util::GetStringFUTF16(IDS_LOAD_STATE_WAITING_FOR_RESPONSE,
71                                        web_contents()->GetLoadStateHost());
72    // Ignore net::LOAD_STATE_READING_RESPONSE and net::LOAD_STATE_IDLE
73    case net::LOAD_STATE_IDLE:
74    case net::LOAD_STATE_READING_RESPONSE:
75      break;
76  }
77
78  return string16();
79}
80
81////////////////////////////////////////////////////////////////////////////////
82// WebContentsObserver overrides
83
84void CoreTabHelper::WasShown() {
85  WebCacheManager::GetInstance()->ObserveActivity(
86      web_contents()->GetRenderProcessHost()->GetID());
87}
88