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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 original_sizes, requested_sizes_in_pixel, &closest_indices, NULL); | 110 original_sizes, requested_sizes_in_pixel, &closest_indices, NULL); |
111 | 111 |
112 SkBitmap bitmap; | 112 SkBitmap bitmap; |
113 if (!bitmaps.empty()) { | 113 if (!bitmaps.empty()) { |
114 size_t closest_index = closest_indices[0]; | 114 size_t closest_index = closest_indices[0]; |
115 bitmap = bitmaps[closest_index]; | 115 bitmap = bitmaps[closest_index]; |
116 } | 116 } |
117 | 117 |
118 if (!bitmap.isNull()) { | 118 if (!bitmap.isNull()) { |
119 // Update icon with download image and update shortcut. | 119 // Update icon with download image and update shortcut. |
120 shortcut_info_.favicon.Add(gfx::Image::CreateFrom1xBitmap(bitmap)); | 120 shortcut_info_->favicon.Add(gfx::Image::CreateFrom1xBitmap(bitmap)); |
121 extensions::TabHelper* extensions_tab_helper = | 121 extensions::TabHelper* extensions_tab_helper = |
122 extensions::TabHelper::FromWebContents(web_contents_); | 122 extensions::TabHelper::FromWebContents(web_contents_); |
123 extensions_tab_helper->SetAppIcon(bitmap); | 123 extensions_tab_helper->SetAppIcon(bitmap); |
124 UpdateShortcuts(); | 124 UpdateShortcuts(); |
125 } else { | 125 } else { |
126 // Try the next icon otherwise. | 126 // Try the next icon otherwise. |
127 DownloadIcon(); | 127 DownloadIcon(); |
128 } | 128 } |
129 } | 129 } |
130 | 130 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 void UpdateShortcutWorker::UpdateShortcuts() { | 172 void UpdateShortcutWorker::UpdateShortcuts() { |
173 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, | 173 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
174 base::Bind(&UpdateShortcutWorker::UpdateShortcutsOnFileThread, | 174 base::Bind(&UpdateShortcutWorker::UpdateShortcutsOnFileThread, |
175 base::Unretained(this))); | 175 base::Unretained(this))); |
176 } | 176 } |
177 | 177 |
178 void UpdateShortcutWorker::UpdateShortcutsOnFileThread() { | 178 void UpdateShortcutWorker::UpdateShortcutsOnFileThread() { |
179 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 179 DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
180 | 180 |
181 base::FilePath web_app_path = web_app::GetWebAppDataDirectory( | 181 base::FilePath web_app_path = web_app::GetWebAppDataDirectory( |
182 profile_path_, shortcut_info_.extension_id, shortcut_info_.url); | 182 profile_path_, shortcut_info_->extension_id, shortcut_info_->url); |
183 | 183 |
184 // Ensure web_app_path exists. web_app_path could be missing for a legacy | 184 // Ensure web_app_path exists. web_app_path could be missing for a legacy |
185 // shortcut created by Gears. | 185 // shortcut created by Gears. |
186 if (!base::PathExists(web_app_path) && | 186 if (!base::PathExists(web_app_path) && |
187 !base::CreateDirectory(web_app_path)) { | 187 !base::CreateDirectory(web_app_path)) { |
188 NOTREACHED(); | 188 NOTREACHED(); |
189 return; | 189 return; |
190 } | 190 } |
191 | 191 |
192 base::FilePath icon_file = | 192 base::FilePath icon_file = |
193 web_app::internals::GetIconFilePath(web_app_path, shortcut_info_.title); | 193 web_app::internals::GetIconFilePath(web_app_path, shortcut_info_->title); |
194 web_app::internals::CheckAndSaveIcon(icon_file, shortcut_info_.favicon, true); | 194 web_app::internals::CheckAndSaveIcon(icon_file, shortcut_info_->favicon, |
| 195 true); |
195 | 196 |
196 // Update existing shortcuts' description, icon and app id. | 197 // Update existing shortcuts' description, icon and app id. |
197 CheckExistingShortcuts(); | 198 CheckExistingShortcuts(); |
198 if (!shortcut_files_.empty()) { | 199 if (!shortcut_files_.empty()) { |
199 // Generates app id from web app url and profile path. | 200 // Generates app id from web app url and profile path. |
200 base::string16 app_id = ShellIntegration::GetAppModelIdForProfile( | 201 base::string16 app_id = ShellIntegration::GetAppModelIdForProfile( |
201 base::UTF8ToWide( | 202 base::UTF8ToWide( |
202 web_app::GenerateApplicationNameFromURL(shortcut_info_.url)), | 203 web_app::GenerateApplicationNameFromURL(shortcut_info_->url)), |
203 profile_path_); | 204 profile_path_); |
204 | 205 |
205 // Sanitize description | 206 // Sanitize description |
206 if (shortcut_info_.description.length() >= MAX_PATH) | 207 if (shortcut_info_->description.length() >= MAX_PATH) |
207 shortcut_info_.description.resize(MAX_PATH - 1); | 208 shortcut_info_->description.resize(MAX_PATH - 1); |
208 | 209 |
209 for (size_t i = 0; i < shortcut_files_.size(); ++i) { | 210 for (size_t i = 0; i < shortcut_files_.size(); ++i) { |
210 base::win::ShortcutProperties shortcut_properties; | 211 base::win::ShortcutProperties shortcut_properties; |
211 shortcut_properties.set_target(shortcut_files_[i]); | 212 shortcut_properties.set_target(shortcut_files_[i]); |
212 shortcut_properties.set_description(shortcut_info_.description); | 213 shortcut_properties.set_description(shortcut_info_->description); |
213 shortcut_properties.set_icon(icon_file, 0); | 214 shortcut_properties.set_icon(icon_file, 0); |
214 shortcut_properties.set_app_id(app_id); | 215 shortcut_properties.set_app_id(app_id); |
215 base::win::CreateOrUpdateShortcutLink( | 216 base::win::CreateOrUpdateShortcutLink( |
216 shortcut_files_[i], shortcut_properties, | 217 shortcut_files_[i], shortcut_properties, |
217 base::win::SHORTCUT_UPDATE_EXISTING); | 218 base::win::SHORTCUT_UPDATE_EXISTING); |
218 } | 219 } |
219 } | 220 } |
220 | 221 |
221 OnShortcutsUpdated(true); | 222 OnShortcutsUpdated(true); |
222 } | 223 } |
(...skipping 11 matching lines...) Expand all Loading... |
234 base::Unretained(this))); | 235 base::Unretained(this))); |
235 } | 236 } |
236 } | 237 } |
237 | 238 |
238 void UpdateShortcutWorker::DeleteMeOnUIThread() { | 239 void UpdateShortcutWorker::DeleteMeOnUIThread() { |
239 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 240 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
240 delete this; | 241 delete this; |
241 } | 242 } |
242 | 243 |
243 } // namespace web_app | 244 } // namespace web_app |
OLD | NEW |