session_tab_helper.cc revision 7dbb3d5cf0c15f500944d211057644d6a2f37371
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/sessions/session_tab_helper.h"
6
7#include "chrome/browser/chrome_notification_types.h"
8#include "chrome/browser/profiles/profile.h"
9#include "chrome/browser/sessions/session_service.h"
10#include "chrome/browser/sessions/session_service_factory.h"
11#include "chrome/common/extensions/extension_messages.h"
12#include "content/public/browser/notification_service.h"
13#include "content/public/browser/render_view_host.h"
14#include "content/public/browser/web_contents.h"
15
16DEFINE_WEB_CONTENTS_USER_DATA_KEY(SessionTabHelper);
17
18SessionTabHelper::SessionTabHelper(content::WebContents* contents)
19    : content::WebContentsObserver(contents) {
20}
21
22SessionTabHelper::~SessionTabHelper() {
23}
24
25void SessionTabHelper::SetWindowID(const SessionID& id) {
26  window_id_ = id;
27
28  // Extension code in the renderer holds the ID of the window that hosts it.
29  // Notify it that the window ID changed.
30  web_contents()->GetRenderViewHost()->Send(
31          new ExtensionMsg_UpdateBrowserWindowId(
32          web_contents()->GetRenderViewHost()->GetRoutingID(), id.id()));
33}
34
35void SessionTabHelper::RenderViewCreated(
36    content::RenderViewHost* render_view_host) {
37  render_view_host->Send(
38      new ExtensionMsg_UpdateBrowserWindowId(render_view_host->GetRoutingID(),
39                                             window_id_.id()));
40}
41
42void SessionTabHelper::UserAgentOverrideSet(const std::string& user_agent) {
43#if defined(ENABLE_SESSION_SERVICE)
44  Profile* profile =
45      Profile::FromBrowserContext(web_contents()->GetBrowserContext());
46  SessionService* session = SessionServiceFactory::GetForProfile(profile);
47  if (session)
48    session->SetTabUserAgentOverride(window_id(), session_id(), user_agent);
49#endif
50}
51