| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/webshare/share_service_impl.h" | 5 #include "chrome/browser/webshare/share_service_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <functional> | 8 #include <functional> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 start_index_to_copy, url_template.size() - start_index_to_copy)); | 116 start_index_to_copy, url_template.size() - start_index_to_copy)); |
| 117 | 117 |
| 118 *url_template_filled = JoinString(split_template); | 118 *url_template_filled = JoinString(split_template); |
| 119 return true; | 119 return true; |
| 120 } | 120 } |
| 121 | 121 |
| 122 void ShareServiceImpl::ShowPickerDialog( | 122 void ShareServiceImpl::ShowPickerDialog( |
| 123 const std::vector<std::pair<base::string16, GURL>>& targets, | 123 const std::vector<std::pair<base::string16, GURL>>& targets, |
| 124 const base::Callback<void(base::Optional<std::string>)>& callback) { | 124 const base::Callback<void(base::Optional<std::string>)>& callback) { |
| 125 // TODO(mgiuca): Get the browser window as |parent_window|. | 125 // TODO(mgiuca): Get the browser window as |parent_window|. |
| 126 #if defined(OS_LINUX) || defined(OS_WIN) | |
| 127 chrome::ShowWebShareTargetPickerDialog(nullptr /* parent_window */, targets, | 126 chrome::ShowWebShareTargetPickerDialog(nullptr /* parent_window */, targets, |
| 128 callback); | 127 callback); |
| 129 #else | |
| 130 callback.Run(base::nullopt); | |
| 131 #endif | |
| 132 } | 128 } |
| 133 | 129 |
| 134 Browser* ShareServiceImpl::GetBrowser() { | 130 Browser* ShareServiceImpl::GetBrowser() { |
| 135 // TODO(constantina): Prevent this code from being run/compiled in android. | |
| 136 #if defined(OS_LINUX) || defined(OS_WIN) | |
| 137 return BrowserList::GetInstance()->GetLastActive(); | 131 return BrowserList::GetInstance()->GetLastActive(); |
| 138 #else | |
| 139 return nullptr; | |
| 140 #endif | |
| 141 } | 132 } |
| 142 | 133 |
| 143 void ShareServiceImpl::OpenTargetURL(const GURL& target_url) { | 134 void ShareServiceImpl::OpenTargetURL(const GURL& target_url) { |
| 144 // TODO(constantina): Prevent this code from being run/compiled in android. | |
| 145 #if defined(OS_LINUX) || defined(OS_WIN) | |
| 146 Browser* browser = GetBrowser(); | 135 Browser* browser = GetBrowser(); |
| 147 chrome::AddTabAt(browser, target_url, | 136 chrome::AddTabAt(browser, target_url, |
| 148 browser->tab_strip_model()->active_index() + 1, true); | 137 browser->tab_strip_model()->active_index() + 1, true); |
| 149 #endif | |
| 150 } | 138 } |
| 151 | 139 |
| 152 std::string ShareServiceImpl::GetTargetTemplate( | 140 std::string ShareServiceImpl::GetTargetTemplate( |
| 153 const std::string& target_url, | 141 const std::string& target_url, |
| 154 const base::DictionaryValue& share_targets) { | 142 const base::DictionaryValue& share_targets) { |
| 155 const base::DictionaryValue* share_target_info_dict = nullptr; | 143 const base::DictionaryValue* share_target_info_dict = nullptr; |
| 156 share_targets.GetDictionaryWithoutPathExpansion(target_url, | 144 share_targets.GetDictionaryWithoutPathExpansion(target_url, |
| 157 &share_target_info_dict); | 145 &share_target_info_dict); |
| 158 | 146 |
| 159 std::string url_template; | 147 std::string url_template; |
| 160 share_target_info_dict->GetString("url_template", &url_template); | 148 share_target_info_dict->GetString("url_template", &url_template); |
| 161 return url_template; | 149 return url_template; |
| 162 } | 150 } |
| 163 | 151 |
| 164 PrefService* ShareServiceImpl::GetPrefService() { | 152 PrefService* ShareServiceImpl::GetPrefService() { |
| 165 // TODO(constantina): Prevent this code from being run/compiled in android. | |
| 166 #if defined(OS_LINUX) || defined(OS_WIN) | |
| 167 return GetBrowser()->profile()->GetPrefs(); | 153 return GetBrowser()->profile()->GetPrefs(); |
| 168 #else | |
| 169 return nullptr; | |
| 170 #endif | |
| 171 } | 154 } |
| 172 | 155 |
| 173 blink::mojom::EngagementLevel ShareServiceImpl::GetEngagementLevel( | 156 blink::mojom::EngagementLevel ShareServiceImpl::GetEngagementLevel( |
| 174 const GURL& url) { | 157 const GURL& url) { |
| 175 // TODO(constantina): Prevent this code from being run/compiled in android. | |
| 176 #if defined(OS_LINUX) || defined(OS_WIN) | |
| 177 SiteEngagementService* site_engagement_service = | 158 SiteEngagementService* site_engagement_service = |
| 178 SiteEngagementService::Get(GetBrowser()->profile()); | 159 SiteEngagementService::Get(GetBrowser()->profile()); |
| 179 return site_engagement_service->GetEngagementLevel(url); | 160 return site_engagement_service->GetEngagementLevel(url); |
| 180 #else | |
| 181 return blink::mojom::EngagementLevel::NONE; | |
| 182 #endif | |
| 183 } | 161 } |
| 184 | 162 |
| 185 // static | 163 // static |
| 186 std::vector<std::pair<base::string16, GURL>> | 164 std::vector<std::pair<base::string16, GURL>> |
| 187 ShareServiceImpl::GetTargetsWithSufficientEngagement( | 165 ShareServiceImpl::GetTargetsWithSufficientEngagement( |
| 188 const base::DictionaryValue& share_targets) { | 166 const base::DictionaryValue& share_targets) { |
| 189 constexpr blink::mojom::EngagementLevel kMinimumEngagementLevel = | 167 constexpr blink::mojom::EngagementLevel kMinimumEngagementLevel = |
| 190 blink::mojom::EngagementLevel::LOW; | 168 blink::mojom::EngagementLevel::LOW; |
| 191 | 169 |
| 192 std::vector<std::pair<base::string16, GURL>> sufficiently_engaged_targets; | 170 std::vector<std::pair<base::string16, GURL>> sufficiently_engaged_targets; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 209 | 187 |
| 210 return sufficiently_engaged_targets; | 188 return sufficiently_engaged_targets; |
| 211 } | 189 } |
| 212 | 190 |
| 213 void ShareServiceImpl::Share(const std::string& title, | 191 void ShareServiceImpl::Share(const std::string& title, |
| 214 const std::string& text, | 192 const std::string& text, |
| 215 const GURL& share_url, | 193 const GURL& share_url, |
| 216 const ShareCallback& callback) { | 194 const ShareCallback& callback) { |
| 217 std::unique_ptr<base::DictionaryValue> share_targets; | 195 std::unique_ptr<base::DictionaryValue> share_targets; |
| 218 | 196 |
| 219 // TODO(constantina): Prevent this code from being run/compiled in android. | |
| 220 #if defined(OS_LINUX) || defined(OS_WIN) | |
| 221 share_targets = GetPrefService() | 197 share_targets = GetPrefService() |
| 222 ->GetDictionary(prefs::kWebShareVisitedTargets) | 198 ->GetDictionary(prefs::kWebShareVisitedTargets) |
| 223 ->CreateDeepCopy(); | 199 ->CreateDeepCopy(); |
| 224 #else | |
| 225 return; | |
| 226 #endif | |
| 227 | 200 |
| 228 std::vector<std::pair<base::string16, GURL>> sufficiently_engaged_targets = | 201 std::vector<std::pair<base::string16, GURL>> sufficiently_engaged_targets = |
| 229 GetTargetsWithSufficientEngagement(*share_targets); | 202 GetTargetsWithSufficientEngagement(*share_targets); |
| 230 | 203 |
| 231 ShowPickerDialog( | 204 ShowPickerDialog( |
| 232 sufficiently_engaged_targets, | 205 sufficiently_engaged_targets, |
| 233 base::Bind(&ShareServiceImpl::OnPickerClosed, base::Unretained(this), | 206 base::Bind(&ShareServiceImpl::OnPickerClosed, base::Unretained(this), |
| 234 base::Passed(&share_targets), title, text, share_url, | 207 base::Passed(&share_targets), title, text, share_url, |
| 235 callback)); | 208 callback)); |
| 236 } | 209 } |
| (...skipping 29 matching lines...) Expand all Loading... |
| 266 const GURL target(url_base.as_string() + url_template_filled); | 239 const GURL target(url_base.as_string() + url_template_filled); |
| 267 if (!target.is_valid()) { | 240 if (!target.is_valid()) { |
| 268 callback.Run(base::Optional<std::string>( | 241 callback.Run(base::Optional<std::string>( |
| 269 "Error: url of share target is not a valid url.")); | 242 "Error: url of share target is not a valid url.")); |
| 270 return; | 243 return; |
| 271 } | 244 } |
| 272 OpenTargetURL(target); | 245 OpenTargetURL(target); |
| 273 | 246 |
| 274 callback.Run(base::nullopt); | 247 callback.Run(base::nullopt); |
| 275 } | 248 } |
| OLD | NEW |