OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/gears_integration.h" | 5 #include "chrome/browser/gears_integration.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/base64.h" | 10 #include "base/base64.h" |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
12 #include "base/message_loop.h" | 12 #include "base/message_loop.h" |
13 #include "base/scoped_ptr.h" | 13 #include "base/scoped_ptr.h" |
14 #include "base/utf_string_conversions.h" | 14 #include "base/utf_string_conversions.h" |
15 #include "chrome/browser/chrome_plugin_host.h" | 15 #include "chrome/browser/chrome_plugin_host.h" |
16 #include "chrome/common/chrome_plugin_util.h" | 16 #include "chrome/common/chrome_plugin_util.h" |
17 #include "chrome/common/gears_api.h" | 17 #include "chrome/common/gears_api.h" |
| 18 #include "chrome/common/web_apps.h" |
18 #include "gfx/codec/png_codec.h" | 19 #include "gfx/codec/png_codec.h" |
19 #include "googleurl/src/gurl.h" | 20 #include "googleurl/src/gurl.h" |
20 #include "third_party/skia/include/core/SkBitmap.h" | 21 #include "third_party/skia/include/core/SkBitmap.h" |
21 #include "webkit/glue/dom_operations.h" | |
22 | 22 |
23 // The following 2 helpers are borrowed from the Gears codebase. | 23 // The following 2 helpers are borrowed from the Gears codebase. |
24 | 24 |
25 const size_t kUserPathComponentMaxChars = 64; | 25 const size_t kUserPathComponentMaxChars = 64; |
26 | 26 |
27 // Returns true if and only if the char meets the following criteria: | 27 // Returns true if and only if the char meets the following criteria: |
28 // | 28 // |
29 // - visible ASCII | 29 // - visible ASCII |
30 // - None of the following characters: / \ : * ? " < > | ; , | 30 // - None of the following characters: / \ : * ? " < > | ; , |
31 // | 31 // |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 return icon_url; | 132 return icon_url; |
133 } | 133 } |
134 | 134 |
135 // This class holds and manages the data passed to the | 135 // This class holds and manages the data passed to the |
136 // GEARSPLUGINCOMMAND_CREATE_SHORTCUT plugin command. | 136 // GEARSPLUGINCOMMAND_CREATE_SHORTCUT plugin command. |
137 class CreateShortcutCommand : public CPCommandInterface { | 137 class CreateShortcutCommand : public CPCommandInterface { |
138 public: | 138 public: |
139 CreateShortcutCommand( | 139 CreateShortcutCommand( |
140 const std::string& name, const std::string& orig_name, | 140 const std::string& name, const std::string& orig_name, |
141 const std::string& url, const std::string& description, | 141 const std::string& url, const std::string& description, |
142 const std::vector<webkit_glue::WebApplicationInfo::IconInfo> &icons, | 142 const std::vector<WebApplicationInfo::IconInfo> &icons, |
143 const SkBitmap& fallback_icon, | 143 const SkBitmap& fallback_icon, |
144 GearsCreateShortcutCallback* callback) | 144 GearsCreateShortcutCallback* callback) |
145 : name_(name), url_(url), description_(description), | 145 : name_(name), url_(url), description_(description), |
146 orig_name_(orig_name), callback_(callback), | 146 orig_name_(orig_name), callback_(callback), |
147 calling_loop_(MessageLoop::current()) { | 147 calling_loop_(MessageLoop::current()) { |
148 // shortcut_data_ has the same lifetime as our strings, so we just | 148 // shortcut_data_ has the same lifetime as our strings, so we just |
149 // point it at their internal data. | 149 // point it at their internal data. |
150 memset(&shortcut_data_, 0, sizeof(shortcut_data_)); | 150 memset(&shortcut_data_, 0, sizeof(shortcut_data_)); |
151 shortcut_data_.name = name_.c_str(); | 151 shortcut_data_.name = name_.c_str(); |
152 shortcut_data_.url = url_.c_str(); | 152 shortcut_data_.url = url_.c_str(); |
153 shortcut_data_.description = description_.c_str(); | 153 shortcut_data_.description = description_.c_str(); |
154 shortcut_data_.orig_name = orig_name_.c_str(); | 154 shortcut_data_.orig_name = orig_name_.c_str(); |
155 | 155 |
156 // Search the icons array for Gears-supported sizes and copy the strings. | 156 // Search the icons array for Gears-supported sizes and copy the strings. |
157 bool has_icon = false; | 157 bool has_icon = false; |
158 | 158 |
159 for (size_t i = 0; i < icons.size(); ++i) { | 159 for (size_t i = 0; i < icons.size(); ++i) { |
160 const webkit_glue::WebApplicationInfo::IconInfo& icon = icons[i]; | 160 const WebApplicationInfo::IconInfo& icon = icons[i]; |
161 if (icon.width == 16 && icon.height == 16) { | 161 if (icon.width == 16 && icon.height == 16) { |
162 has_icon = true; | 162 has_icon = true; |
163 InitIcon(SIZE_16x16, icon.url, 16, 16); | 163 InitIcon(SIZE_16x16, icon.url, 16, 16); |
164 } else if (icon.width == 32 && icon.height == 32) { | 164 } else if (icon.width == 32 && icon.height == 32) { |
165 has_icon = true; | 165 has_icon = true; |
166 InitIcon(SIZE_32x32, icon.url, 32, 32); | 166 InitIcon(SIZE_32x32, icon.url, 32, 32); |
167 } else if (icon.width == 48 && icon.height == 48) { | 167 } else if (icon.width == 48 && icon.height == 48) { |
168 has_icon = true; | 168 has_icon = true; |
169 InitIcon(SIZE_48x48, icon.url, 48, 48); | 169 InitIcon(SIZE_48x48, icon.url, 48, 48); |
170 } else if (icon.width == 128 && icon.height == 128) { | 170 } else if (icon.width == 128 && icon.height == 128) { |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 std::string orig_name_; | 225 std::string orig_name_; |
226 scoped_ptr<GearsCreateShortcutCallback> callback_; | 226 scoped_ptr<GearsCreateShortcutCallback> callback_; |
227 MessageLoop* calling_loop_; | 227 MessageLoop* calling_loop_; |
228 }; | 228 }; |
229 | 229 |
230 // Allows InvokeLater without adding refcounting. The object is only deleted | 230 // Allows InvokeLater without adding refcounting. The object is only deleted |
231 // when its last InvokeLater is run anyway. | 231 // when its last InvokeLater is run anyway. |
232 DISABLE_RUNNABLE_METHOD_REFCOUNT(CreateShortcutCommand); | 232 DISABLE_RUNNABLE_METHOD_REFCOUNT(CreateShortcutCommand); |
233 | 233 |
234 void GearsCreateShortcut( | 234 void GearsCreateShortcut( |
235 const webkit_glue::WebApplicationInfo& app_info, | 235 const WebApplicationInfo& app_info, |
236 const string16& fallback_name, | 236 const string16& fallback_name, |
237 const GURL& fallback_url, | 237 const GURL& fallback_url, |
238 const SkBitmap& fallback_icon, | 238 const SkBitmap& fallback_icon, |
239 GearsCreateShortcutCallback* callback) { | 239 GearsCreateShortcutCallback* callback) { |
240 string16 name = | 240 string16 name = |
241 !app_info.title.empty() ? app_info.title : fallback_name; | 241 !app_info.title.empty() ? app_info.title : fallback_name; |
242 std::string orig_name_utf8 = UTF16ToUTF8(name); | 242 std::string orig_name_utf8 = UTF16ToUTF8(name); |
243 EnsureStringValidPathComponent(name); | 243 EnsureStringValidPathComponent(name); |
244 | 244 |
245 std::string name_utf8 = UTF16ToUTF8(name); | 245 std::string name_utf8 = UTF16ToUTF8(name); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 struct RunnableMethodTraits<QueryShortcutsCommand> { | 300 struct RunnableMethodTraits<QueryShortcutsCommand> { |
301 void RetainCallee(QueryShortcutsCommand* command) {} | 301 void RetainCallee(QueryShortcutsCommand* command) {} |
302 void ReleaseCallee(QueryShortcutsCommand* command) {} | 302 void ReleaseCallee(QueryShortcutsCommand* command) {} |
303 }; | 303 }; |
304 | 304 |
305 void GearsQueryShortcuts(GearsQueryShortcutsCallback* callback) { | 305 void GearsQueryShortcuts(GearsQueryShortcutsCallback* callback) { |
306 CPHandleCommand(GEARSPLUGINCOMMAND_GET_SHORTCUT_LIST, | 306 CPHandleCommand(GEARSPLUGINCOMMAND_GET_SHORTCUT_LIST, |
307 new QueryShortcutsCommand(callback), | 307 new QueryShortcutsCommand(callback), |
308 0); | 308 0); |
309 } | 309 } |
OLD | NEW |