Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Side by Side Diff: chrome/browser/extensions/extension_sidebar_api.cc

Issue 6250141: Sidebar mini tabs UI (views version).... Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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_sidebar_api.h" 5 #include "chrome/browser/extensions/extension_sidebar_api.h"
6 6
7 #include "base/json/json_writer.h" 7 #include "base/json/json_writer.h"
8 #include "base/string_number_conversions.h" 8 #include "base/string_number_conversions.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/string16.h" 10 #include "base/string16.h"
11 #include "base/values.h" 11 #include "base/values.h"
12 #include "chrome/browser/extensions/extension_event_router.h" 12 #include "chrome/browser/extensions/extension_event_router.h"
13 #include "chrome/browser/extensions/extension_service.h" 13 #include "chrome/browser/extensions/extension_service.h"
14 #include "chrome/browser/extensions/extension_tabs_module.h" 14 #include "chrome/browser/extensions/extension_tabs_module.h"
15 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile.h"
16 #include "chrome/browser/sidebar/sidebar_container.h" 16 #include "chrome/browser/sidebar/sidebar_container.h"
17 #include "chrome/browser/sidebar/sidebar_manager.h" 17 #include "chrome/browser/sidebar/sidebar_manager.h"
18 #include "chrome/browser/tab_contents/tab_contents.h"
19 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 18 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
20 #include "chrome/common/extensions/extension.h" 19 #include "chrome/common/extensions/extension.h"
21 #include "chrome/common/extensions/extension_constants.h" 20 #include "chrome/common/extensions/extension_constants.h"
22 #include "chrome/common/extensions/extension_error_utils.h" 21 #include "chrome/common/extensions/extension_error_utils.h"
23 #include "chrome/common/extensions/extension_sidebar_utils.h" 22 #include "chrome/common/extensions/extension_sidebar_utils.h"
24 #include "chrome/common/render_messages.h" 23 #include "chrome/common/render_messages.h"
25 #include "ipc/ipc_message_utils.h" 24 #include "ipc/ipc_message_utils.h"
26 #include "third_party/skia/include/core/SkBitmap.h" 25 #include "third_party/skia/include/core/SkBitmap.h"
27 26
28 namespace { 27 namespace {
(...skipping 18 matching lines...) Expand all
47 46
48 namespace extension_sidebar_constants { 47 namespace extension_sidebar_constants {
49 // Sidebar states. 48 // Sidebar states.
50 const char kActiveState[] = "active"; 49 const char kActiveState[] = "active";
51 const char kHiddenState[] = "hidden"; 50 const char kHiddenState[] = "hidden";
52 const char kShownState[] = "shown"; 51 const char kShownState[] = "shown";
53 } // namespace extension_sidebar_constants 52 } // namespace extension_sidebar_constants
54 53
55 // static 54 // static
56 void ExtensionSidebarEventRouter::OnStateChanged( 55 void ExtensionSidebarEventRouter::OnStateChanged(
57 Profile* profile, TabContents* tab, const std::string& content_id, 56 Profile* profile,
57 TabContentsWrapper* tab,
58 const std::string& content_id,
58 const std::string& state) { 59 const std::string& state) {
59 int tab_id = ExtensionTabUtil::GetTabId(tab); 60 int tab_id = ExtensionTabUtil::GetTabId(tab->tab_contents());
60 DictionaryValue* details = new DictionaryValue; 61 DictionaryValue* details = new DictionaryValue;
61 details->Set(kTabIdKey, Value::CreateIntegerValue(tab_id)); 62 details->Set(kTabIdKey, Value::CreateIntegerValue(tab_id));
62 details->Set(kStateKey, Value::CreateStringValue(state)); 63 details->Set(kStateKey, Value::CreateStringValue(state));
63 64
64 ListValue args; 65 ListValue args;
65 args.Set(0, details); 66 args.Set(0, details);
66 std::string json_args; 67 std::string json_args;
67 base::JSONWriter::Write(&args, false, &json_args); 68 base::JSONWriter::Write(&args, false, &json_args);
68 69
69 profile->GetExtensionEventRouter()->DispatchEventToExtension( 70 profile->GetExtensionEventRouter()->DispatchEventToExtension(
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 } 123 }
123 if (!ExtensionTabUtil::GetDefaultTab(browser, &tab_contents, &tab_id)) { 124 if (!ExtensionTabUtil::GetDefaultTab(browser, &tab_contents, &tab_id)) {
124 error_ = kNoDefaultTabError; 125 error_ = kNoDefaultTabError;
125 return false; 126 return false;
126 } 127 }
127 } 128 }
128 if (!tab_contents) 129 if (!tab_contents)
129 return false; 130 return false;
130 131
131 std::string content_id(GetExtension()->id()); 132 std::string content_id(GetExtension()->id());
132 return RunImpl(tab_contents->tab_contents(), content_id, *details); 133 return RunImpl(tab_contents, content_id, *details);
133 } 134 }
134 135
135 136
136 bool CollapseSidebarFunction::RunImpl(TabContents* tab, 137 bool CollapseSidebarFunction::RunImpl(TabContentsWrapper* tab,
137 const std::string& content_id, 138 const std::string& content_id,
138 const DictionaryValue& details) { 139 const DictionaryValue& details) {
139 SidebarManager::GetInstance()->CollapseSidebar(tab, content_id); 140 SidebarManager::GetInstance()->CollapseSidebar(tab, content_id);
140 return true; 141 return true;
141 } 142 }
142 143
143 bool ExpandSidebarFunction::RunImpl(TabContents* tab, 144 bool ExpandSidebarFunction::RunImpl(TabContentsWrapper* tab,
144 const std::string& content_id, 145 const std::string& content_id,
145 const DictionaryValue& details) { 146 const DictionaryValue& details) {
146 // TODO(alekseys): enable this check back when WebKit's user gesture flag 147 // TODO(alekseys): enable this check back when WebKit's user gesture flag
147 // reporting for extension calls is fixed. 148 // reporting for extension calls is fixed.
148 // if (!user_gesture()) { 149 // if (!user_gesture()) {
149 // error_ = kInvalidExpandContextError; 150 // error_ = kInvalidExpandContextError;
150 // return false; 151 // return false;
151 // } 152 // }
152 SidebarManager::GetInstance()->ExpandSidebar(tab, content_id); 153 SidebarManager::GetInstance()->ExpandSidebar(tab, content_id);
153 return true; 154 return true;
154 } 155 }
155 156
156 bool GetStateSidebarFunction::RunImpl(TabContents* tab, 157 bool GetStateSidebarFunction::RunImpl(TabContentsWrapper* tab,
157 const std::string& content_id, 158 const std::string& content_id,
158 const DictionaryValue& details) { 159 const DictionaryValue& details) {
159 SidebarManager* manager = SidebarManager::GetInstance(); 160 SidebarManager* manager = SidebarManager::GetInstance();
160 161
161 const char* result = extension_sidebar_constants::kHiddenState; 162 const char* result = extension_sidebar_constants::kHiddenState;
162 if (manager->GetSidebarTabContents(tab, content_id)) { 163 if (manager->GetSidebarTabContents(tab, content_id)) {
163 bool is_active = false; 164 bool is_active = false;
164 // Sidebar is considered active only if tab is selected, sidebar UI 165 // Sidebar is considered active only if tab is selected, sidebar UI
165 // is expanded and this extension's content is displayed on it. 166 // is expanded and this extension's content is displayed on it.
166 SidebarContainer* active_sidebar = 167 SidebarContainer* active_sidebar =
(...skipping 20 matching lines...) Expand all
187 } 188 }
188 189
189 result = is_active ? extension_sidebar_constants::kActiveState : 190 result = is_active ? extension_sidebar_constants::kActiveState :
190 extension_sidebar_constants::kShownState; 191 extension_sidebar_constants::kShownState;
191 } 192 }
192 193
193 result_.reset(Value::CreateStringValue(result)); 194 result_.reset(Value::CreateStringValue(result));
194 return true; 195 return true;
195 } 196 }
196 197
197 bool HideSidebarFunction::RunImpl(TabContents* tab, 198 bool HideSidebarFunction::RunImpl(TabContentsWrapper* tab,
198 const std::string& content_id, 199 const std::string& content_id,
199 const DictionaryValue& details) { 200 const DictionaryValue& details) {
200 SidebarManager::GetInstance()->HideSidebar(tab, content_id); 201 SidebarManager::GetInstance()->HideSidebar(tab, content_id);
201 return true; 202 return true;
202 } 203 }
203 204
204 bool NavigateSidebarFunction::RunImpl(TabContents* tab, 205 bool NavigateSidebarFunction::RunImpl(TabContentsWrapper* tab,
205 const std::string& content_id, 206 const std::string& content_id,
206 const DictionaryValue& details) { 207 const DictionaryValue& details) {
207 std::string path_string; 208 std::string path_string;
208 EXTENSION_FUNCTION_VALIDATE(details.GetString(kPathKey, &path_string)); 209 EXTENSION_FUNCTION_VALIDATE(details.GetString(kPathKey, &path_string));
209 210
210 GURL url = extension_sidebar_utils::ResolveRelativePath( 211 GURL url = extension_sidebar_utils::ResolveRelativePath(
211 path_string, GetExtension(), &error_); 212 path_string, GetExtension(), &error_);
212 if (!url.is_valid()) 213 if (!url.is_valid())
213 return false; 214 return false;
214 215
215 SidebarManager::GetInstance()->NavigateSidebar(tab, content_id, url); 216 SidebarManager::GetInstance()->NavigateSidebar(tab, content_id, url);
216 return true; 217 return true;
217 } 218 }
218 219
219 bool SetBadgeTextSidebarFunction::RunImpl(TabContents* tab, 220 bool SetBadgeTextSidebarFunction::RunImpl(TabContentsWrapper* tab,
220 const std::string& content_id, 221 const std::string& content_id,
221 const DictionaryValue& details) { 222 const DictionaryValue& details) {
222 string16 badge_text; 223 string16 badge_text;
223 EXTENSION_FUNCTION_VALIDATE(details.GetString(kBadgeTextKey, &badge_text)); 224 EXTENSION_FUNCTION_VALIDATE(details.GetString(kBadgeTextKey, &badge_text));
224 SidebarManager::GetInstance()->SetSidebarBadgeText( 225 SidebarManager::GetInstance()->SetSidebarBadgeText(
225 tab, content_id, badge_text); 226 tab, content_id, badge_text);
226 return true; 227 return true;
227 } 228 }
228 229
229 bool SetIconSidebarFunction::RunImpl(TabContents* tab, 230 bool SetIconSidebarFunction::RunImpl(TabContentsWrapper* tab,
230 const std::string& content_id, 231 const std::string& content_id,
231 const DictionaryValue& details) { 232 const DictionaryValue& details) {
232 BinaryValue* binary; 233 BinaryValue* binary;
233 EXTENSION_FUNCTION_VALIDATE(details.GetBinary(kImageDataKey, &binary)); 234 EXTENSION_FUNCTION_VALIDATE(details.GetBinary(kImageDataKey, &binary));
234 IPC::Message bitmap_pickle(binary->GetBuffer(), binary->GetSize()); 235 IPC::Message bitmap_pickle(binary->GetBuffer(), binary->GetSize());
235 void* iter = NULL; 236 void* iter = NULL;
236 scoped_ptr<SkBitmap> bitmap(new SkBitmap); 237 scoped_ptr<SkBitmap> bitmap(new SkBitmap);
237 EXTENSION_FUNCTION_VALIDATE( 238 EXTENSION_FUNCTION_VALIDATE(
238 IPC::ReadParam(&bitmap_pickle, &iter, bitmap.get())); 239 IPC::ReadParam(&bitmap_pickle, &iter, bitmap.get()));
239 SidebarManager::GetInstance()->SetSidebarIcon(tab, content_id, *bitmap); 240 SidebarManager::GetInstance()->SetSidebarIcon(tab, content_id, *bitmap);
240 return true; 241 return true;
241 } 242 }
242 243
243 bool SetTitleSidebarFunction::RunImpl(TabContents* tab, 244 bool SetTitleSidebarFunction::RunImpl(TabContentsWrapper* tab,
244 const std::string& content_id, 245 const std::string& content_id,
245 const DictionaryValue& details) { 246 const DictionaryValue& details) {
246 string16 title; 247 string16 title;
247 EXTENSION_FUNCTION_VALIDATE(details.GetString(kTitleKey, &title)); 248 EXTENSION_FUNCTION_VALIDATE(details.GetString(kTitleKey, &title));
248 SidebarManager::GetInstance()->SetSidebarTitle(tab, content_id, title); 249 SidebarManager::GetInstance()->SetSidebarTitle(tab, content_id, title);
249 return true; 250 return true;
250 } 251 }
251 252
252 bool ShowSidebarFunction::RunImpl(TabContents* tab, 253 bool ShowSidebarFunction::RunImpl(TabContentsWrapper* tab,
253 const std::string& content_id, 254 const std::string& content_id,
254 const DictionaryValue& details) { 255 const DictionaryValue& details) {
255 SidebarManager::GetInstance()->ShowSidebar(tab, content_id); 256 SidebarManager::GetInstance()->ShowSidebar(tab, content_id);
256 return true; 257 return true;
257 } 258 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_sidebar_api.h ('k') | chrome/browser/sidebar/sidebar_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698