OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/web_applications/update_shortcut_worker_win.h" | 5 #include "chrome/browser/web_applications/update_shortcut_worker_win.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 21 matching lines...) Expand all Loading... |
32 using content::WebContents; | 32 using content::WebContents; |
33 | 33 |
34 namespace web_app { | 34 namespace web_app { |
35 | 35 |
36 UpdateShortcutWorker::UpdateShortcutWorker(WebContents* web_contents) | 36 UpdateShortcutWorker::UpdateShortcutWorker(WebContents* web_contents) |
37 : web_contents_(web_contents), | 37 : web_contents_(web_contents), |
38 profile_path_(Profile::FromBrowserContext( | 38 profile_path_(Profile::FromBrowserContext( |
39 web_contents->GetBrowserContext())->GetPath()) { | 39 web_contents->GetBrowserContext())->GetPath()) { |
40 extensions::TabHelper* extensions_tab_helper = | 40 extensions::TabHelper* extensions_tab_helper = |
41 extensions::TabHelper::FromWebContents(web_contents); | 41 extensions::TabHelper::FromWebContents(web_contents); |
42 web_app::GetShortcutInfoForTab(web_contents_, &shortcut_info_); | 42 shortcut_info_ = web_app::GetShortcutInfoForTab(web_contents_); |
43 web_app::GetIconsInfo(extensions_tab_helper->web_app_info(), | 43 web_app::GetIconsInfo(extensions_tab_helper->web_app_info(), |
44 &unprocessed_icons_); | 44 &unprocessed_icons_); |
45 file_name_ = web_app::internals::GetSanitizedFileName(shortcut_info_.title); | 45 file_name_ = web_app::internals::GetSanitizedFileName(shortcut_info_->title); |
46 | 46 |
47 registrar_.Add( | 47 registrar_.Add( |
48 this, | 48 this, |
49 chrome::NOTIFICATION_TAB_CLOSING, | 49 chrome::NOTIFICATION_TAB_CLOSING, |
50 content::Source<NavigationController>(&web_contents->GetController())); | 50 content::Source<NavigationController>(&web_contents->GetController())); |
51 } | 51 } |
52 | 52 |
53 void UpdateShortcutWorker::Run() { | 53 void UpdateShortcutWorker::Run() { |
54 // Starting by downloading app icon. | 54 // Starting by downloading app icon. |
55 DownloadIcon(); | 55 DownloadIcon(); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 original_sizes, requested_sizes_in_pixel, &closest_indices, NULL); | 111 original_sizes, requested_sizes_in_pixel, &closest_indices, NULL); |
112 | 112 |
113 SkBitmap bitmap; | 113 SkBitmap bitmap; |
114 if (!bitmaps.empty()) { | 114 if (!bitmaps.empty()) { |
115 size_t closest_index = closest_indices[0]; | 115 size_t closest_index = closest_indices[0]; |
116 bitmap = bitmaps[closest_index]; | 116 bitmap = bitmaps[closest_index]; |
117 } | 117 } |
118 | 118 |
119 if (!bitmap.isNull()) { | 119 if (!bitmap.isNull()) { |
120 // Update icon with download image and update shortcut. | 120 // Update icon with download image and update shortcut. |
121 shortcut_info_.favicon.Add(gfx::Image::CreateFrom1xBitmap(bitmap)); | 121 shortcut_info_->favicon.Add(gfx::Image::CreateFrom1xBitmap(bitmap)); |
122 extensions::TabHelper* extensions_tab_helper = | 122 extensions::TabHelper* extensions_tab_helper = |
123 extensions::TabHelper::FromWebContents(web_contents_); | 123 extensions::TabHelper::FromWebContents(web_contents_); |
124 extensions_tab_helper->SetAppIcon(bitmap); | 124 extensions_tab_helper->SetAppIcon(bitmap); |
125 UpdateShortcuts(); | 125 UpdateShortcuts(); |
126 } else { | 126 } else { |
127 // Try the next icon otherwise. | 127 // Try the next icon otherwise. |
128 DownloadIcon(); | 128 DownloadIcon(); |
129 } | 129 } |
130 } | 130 } |
131 | 131 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 void UpdateShortcutWorker::UpdateShortcuts() { | 173 void UpdateShortcutWorker::UpdateShortcuts() { |
174 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, | 174 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
175 base::Bind(&UpdateShortcutWorker::UpdateShortcutsOnFileThread, | 175 base::Bind(&UpdateShortcutWorker::UpdateShortcutsOnFileThread, |
176 base::Unretained(this))); | 176 base::Unretained(this))); |
177 } | 177 } |
178 | 178 |
179 void UpdateShortcutWorker::UpdateShortcutsOnFileThread() { | 179 void UpdateShortcutWorker::UpdateShortcutsOnFileThread() { |
180 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 180 DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
181 | 181 |
182 base::FilePath web_app_path = web_app::GetWebAppDataDirectory( | 182 base::FilePath web_app_path = web_app::GetWebAppDataDirectory( |
183 profile_path_, shortcut_info_.extension_id, shortcut_info_.url); | 183 profile_path_, shortcut_info_->extension_id, shortcut_info_->url); |
184 | 184 |
185 // Ensure web_app_path exists. web_app_path could be missing for a legacy | 185 // Ensure web_app_path exists. web_app_path could be missing for a legacy |
186 // shortcut created by Gears. | 186 // shortcut created by Gears. |
187 if (!base::PathExists(web_app_path) && | 187 if (!base::PathExists(web_app_path) && |
188 !base::CreateDirectory(web_app_path)) { | 188 !base::CreateDirectory(web_app_path)) { |
189 NOTREACHED(); | 189 NOTREACHED(); |
190 return; | 190 return; |
191 } | 191 } |
192 | 192 |
193 base::FilePath icon_file = | 193 base::FilePath icon_file = |
194 web_app::internals::GetIconFilePath(web_app_path, shortcut_info_.title); | 194 web_app::internals::GetIconFilePath(web_app_path, shortcut_info_->title); |
195 web_app::internals::CheckAndSaveIcon(icon_file, shortcut_info_.favicon, true); | 195 web_app::internals::CheckAndSaveIcon(icon_file, shortcut_info_->favicon, |
| 196 true); |
196 | 197 |
197 // Update existing shortcuts' description, icon and app id. | 198 // Update existing shortcuts' description, icon and app id. |
198 CheckExistingShortcuts(); | 199 CheckExistingShortcuts(); |
199 if (!shortcut_files_.empty()) { | 200 if (!shortcut_files_.empty()) { |
200 // Generates app id from web app url and profile path. | 201 // Generates app id from web app url and profile path. |
201 base::string16 app_id = ShellIntegration::GetAppModelIdForProfile( | 202 base::string16 app_id = ShellIntegration::GetAppModelIdForProfile( |
202 base::UTF8ToWide( | 203 base::UTF8ToWide( |
203 web_app::GenerateApplicationNameFromURL(shortcut_info_.url)), | 204 web_app::GenerateApplicationNameFromURL(shortcut_info_->url)), |
204 profile_path_); | 205 profile_path_); |
205 | 206 |
206 // Sanitize description | 207 // Sanitize description |
207 if (shortcut_info_.description.length() >= MAX_PATH) | 208 if (shortcut_info_->description.length() >= MAX_PATH) |
208 shortcut_info_.description.resize(MAX_PATH - 1); | 209 shortcut_info_->description.resize(MAX_PATH - 1); |
209 | 210 |
210 for (size_t i = 0; i < shortcut_files_.size(); ++i) { | 211 for (size_t i = 0; i < shortcut_files_.size(); ++i) { |
211 base::win::ShortcutProperties shortcut_properties; | 212 base::win::ShortcutProperties shortcut_properties; |
212 shortcut_properties.set_target(shortcut_files_[i]); | 213 shortcut_properties.set_target(shortcut_files_[i]); |
213 shortcut_properties.set_description(shortcut_info_.description); | 214 shortcut_properties.set_description(shortcut_info_->description); |
214 shortcut_properties.set_icon(icon_file, 0); | 215 shortcut_properties.set_icon(icon_file, 0); |
215 shortcut_properties.set_app_id(app_id); | 216 shortcut_properties.set_app_id(app_id); |
216 base::win::CreateOrUpdateShortcutLink( | 217 base::win::CreateOrUpdateShortcutLink( |
217 shortcut_files_[i], shortcut_properties, | 218 shortcut_files_[i], shortcut_properties, |
218 base::win::SHORTCUT_UPDATE_EXISTING); | 219 base::win::SHORTCUT_UPDATE_EXISTING); |
219 } | 220 } |
220 } | 221 } |
221 | 222 |
222 OnShortcutsUpdated(true); | 223 OnShortcutsUpdated(true); |
223 } | 224 } |
(...skipping 11 matching lines...) Expand all Loading... |
235 base::Unretained(this))); | 236 base::Unretained(this))); |
236 } | 237 } |
237 } | 238 } |
238 | 239 |
239 void UpdateShortcutWorker::DeleteMeOnUIThread() { | 240 void UpdateShortcutWorker::DeleteMeOnUIThread() { |
240 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 241 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
241 delete this; | 242 delete this; |
242 } | 243 } |
243 | 244 |
244 } // namespace web_app | 245 } // namespace web_app |
OLD | NEW |