OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/extension_tabs_module.h" | 5 #include "chrome/browser/extensions/extension_tabs_module.h" |
6 | 6 |
7 #include "base/histogram.h" | 7 #include "base/histogram.h" |
8 #include "base/base64.h" | 8 #include "base/base64.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "chrome/browser/browser.h" | 10 #include "chrome/browser/browser.h" |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 static std::string GetWindowTypeText(Browser::Type type); | 71 static std::string GetWindowTypeText(Browser::Type type); |
72 | 72 |
73 int ExtensionTabUtil::GetWindowId(const Browser* browser) { | 73 int ExtensionTabUtil::GetWindowId(const Browser* browser) { |
74 return browser->session_id().id(); | 74 return browser->session_id().id(); |
75 } | 75 } |
76 | 76 |
77 int ExtensionTabUtil::GetTabId(const TabContents* tab_contents) { | 77 int ExtensionTabUtil::GetTabId(const TabContents* tab_contents) { |
78 return tab_contents->controller().session_id().id(); | 78 return tab_contents->controller().session_id().id(); |
79 } | 79 } |
80 | 80 |
81 ExtensionTabUtil::TabStatus ExtensionTabUtil::GetTabStatus( | 81 std::string ExtensionTabUtil::GetTabStatusText(bool is_loading) { |
82 const TabContents* tab_contents) { | 82 return is_loading ? keys::kStatusValueLoading : keys::kStatusValueComplete; |
83 return tab_contents->is_loading() ? TAB_LOADING : TAB_COMPLETE; | |
84 } | |
85 | |
86 std::string ExtensionTabUtil::GetTabStatusText(TabStatus status) { | |
87 std::string text; | |
88 switch (status) { | |
89 case TAB_LOADING: | |
90 text = keys::kStatusValueLoading; | |
91 break; | |
92 case TAB_COMPLETE: | |
93 text = keys::kStatusValueComplete; | |
94 break; | |
95 } | |
96 | |
97 return text; | |
98 } | 83 } |
99 | 84 |
100 int ExtensionTabUtil::GetWindowIdOfTab(const TabContents* tab_contents) { | 85 int ExtensionTabUtil::GetWindowIdOfTab(const TabContents* tab_contents) { |
101 return tab_contents->controller().window_id().id(); | 86 return tab_contents->controller().window_id().id(); |
102 } | 87 } |
103 | 88 |
104 DictionaryValue* ExtensionTabUtil::CreateTabValue( | 89 DictionaryValue* ExtensionTabUtil::CreateTabValue( |
105 const TabContents* contents) { | 90 const TabContents* contents) { |
106 // Find the tab strip and index of this guy. | 91 // Find the tab strip and index of this guy. |
107 for (BrowserList::const_iterator it = BrowserList::begin(); | 92 for (BrowserList::const_iterator it = BrowserList::begin(); |
(...skipping 15 matching lines...) Expand all Loading... |
123 for (int i = 0; i < tab_strip->count(); ++i) { | 108 for (int i = 0; i < tab_strip->count(); ++i) { |
124 tab_list->Append(ExtensionTabUtil::CreateTabValue( | 109 tab_list->Append(ExtensionTabUtil::CreateTabValue( |
125 tab_strip->GetTabContentsAt(i), tab_strip, i)); | 110 tab_strip->GetTabContentsAt(i), tab_strip, i)); |
126 } | 111 } |
127 | 112 |
128 return tab_list; | 113 return tab_list; |
129 } | 114 } |
130 | 115 |
131 DictionaryValue* ExtensionTabUtil::CreateTabValue( | 116 DictionaryValue* ExtensionTabUtil::CreateTabValue( |
132 const TabContents* contents, TabStripModel* tab_strip, int tab_index) { | 117 const TabContents* contents, TabStripModel* tab_strip, int tab_index) { |
133 TabStatus status = GetTabStatus(contents); | |
134 | |
135 DictionaryValue* result = new DictionaryValue(); | 118 DictionaryValue* result = new DictionaryValue(); |
136 result->SetInteger(keys::kIdKey, ExtensionTabUtil::GetTabId(contents)); | 119 result->SetInteger(keys::kIdKey, ExtensionTabUtil::GetTabId(contents)); |
137 result->SetInteger(keys::kIndexKey, tab_index); | 120 result->SetInteger(keys::kIndexKey, tab_index); |
138 result->SetInteger(keys::kWindowIdKey, | 121 result->SetInteger(keys::kWindowIdKey, |
139 ExtensionTabUtil::GetWindowIdOfTab(contents)); | 122 ExtensionTabUtil::GetWindowIdOfTab(contents)); |
140 result->SetString(keys::kUrlKey, contents->GetURL().spec()); | 123 result->SetString(keys::kUrlKey, contents->GetURL().spec()); |
141 result->SetString(keys::kStatusKey, GetTabStatusText(status)); | 124 result->SetString(keys::kStatusKey, GetTabStatusText(contents->is_loading())); |
142 result->SetBoolean(keys::kSelectedKey, | 125 result->SetBoolean(keys::kSelectedKey, |
143 tab_strip && tab_index == tab_strip->selected_index()); | 126 tab_strip && tab_index == tab_strip->selected_index()); |
144 result->SetString(keys::kTitleKey, UTF16ToWide(contents->GetTitle())); | 127 result->SetString(keys::kTitleKey, UTF16ToWide(contents->GetTitle())); |
145 result->SetBoolean(keys::kIncognitoKey, | 128 result->SetBoolean(keys::kIncognitoKey, |
146 contents->profile()->IsOffTheRecord()); | 129 contents->profile()->IsOffTheRecord()); |
147 | 130 |
148 if (status != TAB_LOADING) { | 131 if (!contents->is_loading()) { |
149 NavigationEntry* entry = contents->controller().GetActiveEntry(); | 132 NavigationEntry* entry = contents->controller().GetActiveEntry(); |
150 if (entry) { | 133 if (entry) { |
151 if (entry->favicon().is_valid()) | 134 if (entry->favicon().is_valid()) |
152 result->SetString(keys::kFavIconUrlKey, entry->favicon().url().spec()); | 135 result->SetString(keys::kFavIconUrlKey, entry->favicon().url().spec()); |
153 } | 136 } |
154 } | 137 } |
155 | 138 |
156 return result; | 139 return result; |
157 } | 140 } |
158 | 141 |
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1135 // caller. | 1118 // caller. |
1136 use_type = url.is_valid() && (url != resolved_url) ? | 1119 use_type = url.is_valid() && (url != resolved_url) ? |
1137 RELATIVE_URL_RESOLUTIONS_DIFFER : RELATIVE_URL_RESOLUTIONS_AGREE; | 1120 RELATIVE_URL_RESOLUTIONS_DIFFER : RELATIVE_URL_RESOLUTIONS_AGREE; |
1138 } | 1121 } |
1139 | 1122 |
1140 UMA_HISTOGRAM_ENUMERATION("Extensions.APIUse_RelativeURL", use_type, | 1123 UMA_HISTOGRAM_ENUMERATION("Extensions.APIUse_RelativeURL", use_type, |
1141 EXTENSION_API_RELATIVE_URL_USE_MAX_VALUE); | 1124 EXTENSION_API_RELATIVE_URL_USE_MAX_VALUE); |
1142 | 1125 |
1143 return url; | 1126 return url; |
1144 } | 1127 } |
OLD | NEW |