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.
5 #include "chrome/browser/ui/sync/tab_contents_synced_tab_delegate.h"
7 #include "base/memory/ref_counted.h"
8 #include "chrome/browser/extensions/tab_helper.h"
9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/sessions/session_tab_helper.h"
11 #include "chrome/browser/sync/glue/synced_window_delegate.h"
12 #include "chrome/common/extensions/extension.h"
13 #include "content/public/browser/navigation_controller.h"
14 #include "content/public/browser/navigation_entry.h"
15 #include "content/public/browser/web_contents.h"
17 #if defined(ENABLE_MANAGED_USERS)
18 #include "chrome/browser/managed_mode/managed_mode_navigation_observer.h"
21 using content::NavigationEntry
;
23 DEFINE_WEB_CONTENTS_USER_DATA_KEY(TabContentsSyncedTabDelegate
);
25 TabContentsSyncedTabDelegate::TabContentsSyncedTabDelegate(
26 content::WebContents
* web_contents
)
27 : web_contents_(web_contents
), sync_session_id_(0) {}
29 TabContentsSyncedTabDelegate::~TabContentsSyncedTabDelegate() {}
31 SessionID::id_type
TabContentsSyncedTabDelegate::GetWindowId() const {
32 return SessionTabHelper::FromWebContents(web_contents_
)->window_id().id();
35 SessionID::id_type
TabContentsSyncedTabDelegate::GetSessionId() const {
36 return SessionTabHelper::FromWebContents(web_contents_
)->session_id().id();
39 bool TabContentsSyncedTabDelegate::IsBeingDestroyed() const {
40 return web_contents_
->IsBeingDestroyed();
43 Profile
* TabContentsSyncedTabDelegate::profile() const {
44 return Profile::FromBrowserContext(web_contents_
->GetBrowserContext());
47 std::string
TabContentsSyncedTabDelegate::GetExtensionAppId() const {
48 const scoped_refptr
<const extensions::Extension
> extension_app(
49 extensions::TabHelper::FromWebContents(web_contents_
)->extension_app());
50 return (extension_app
.get() ? extension_app
->id() : std::string());
53 int TabContentsSyncedTabDelegate::GetCurrentEntryIndex() const {
54 return web_contents_
->GetController().GetCurrentEntryIndex();
57 int TabContentsSyncedTabDelegate::GetEntryCount() const {
58 return web_contents_
->GetController().GetEntryCount();
61 int TabContentsSyncedTabDelegate::GetPendingEntryIndex() const {
62 return web_contents_
->GetController().GetPendingEntryIndex();
65 NavigationEntry
* TabContentsSyncedTabDelegate::GetPendingEntry() const {
66 return web_contents_
->GetController().GetPendingEntry();
69 NavigationEntry
* TabContentsSyncedTabDelegate::GetEntryAtIndex(int i
) const {
70 return web_contents_
->GetController().GetEntryAtIndex(i
);
73 NavigationEntry
* TabContentsSyncedTabDelegate::GetActiveEntry() const {
74 return web_contents_
->GetController().GetActiveEntry();
77 bool TabContentsSyncedTabDelegate::ProfileIsManaged() const {
78 return profile()->IsManaged();
81 const std::vector
<const content::NavigationEntry
*>*
82 TabContentsSyncedTabDelegate::GetBlockedNavigations() const {
83 #if defined(ENABLE_MANAGED_USERS)
84 ManagedModeNavigationObserver
* navigation_observer
=
85 ManagedModeNavigationObserver::FromWebContents(web_contents_
);
86 DCHECK(navigation_observer
);
87 return navigation_observer
->blocked_navigations();
94 bool TabContentsSyncedTabDelegate::IsPinned() const {
95 const browser_sync::SyncedWindowDelegate
* window
=
96 browser_sync::SyncedWindowDelegate::FindSyncedWindowDelegateWithId(
98 // We might not have a parent window, e.g. Developer Tools.
99 return window
? window
->IsTabPinned(this) : false;
102 bool TabContentsSyncedTabDelegate::HasWebContents() const { return true; }
104 content::WebContents
* TabContentsSyncedTabDelegate::GetWebContents() const {
105 return web_contents_
;
108 int TabContentsSyncedTabDelegate::GetSyncId() const {
109 return sync_session_id_
;
112 void TabContentsSyncedTabDelegate::SetSyncId(int sync_id
) {
113 sync_session_id_
= sync_id
;