Index: chrome/browser/webshare/share_service_impl_unittest.cc |
diff --git a/chrome/browser/webshare/share_service_impl_unittest.cc b/chrome/browser/webshare/share_service_impl_unittest.cc |
index 1bf936b8c40a389d7b0fc6fc6d2c78337cc2d8a8..c6e226a678e7d659d99f9dc76fb4bc96ff6e3f0a 100644 |
--- a/chrome/browser/webshare/share_service_impl_unittest.cc |
+++ b/chrome/browser/webshare/share_service_impl_unittest.cc |
@@ -9,7 +9,11 @@ |
#include "base/run_loop.h" |
#include "base/strings/utf_string_conversions.h" |
#include "chrome/browser/webshare/share_service_impl.h" |
+#include "chrome/common/pref_names.h" |
#include "chrome/test/base/chrome_render_view_host_test_harness.h" |
+#include "components/prefs/pref_registry_simple.h" |
+#include "components/prefs/scoped_user_pref_update.h" |
+#include "components/prefs/testing_pref_service.h" |
#include "mojo/public/cpp/bindings/interface_request.h" |
#include "mojo/public/cpp/bindings/strong_binding.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -37,22 +41,59 @@ class ShareServiceTestImpl : public ShareServiceImpl { |
picker_result_ = result; |
} |
+ void SetUpPrefs() { |
+ pref_service_.reset(new TestingPrefServiceSimple()); |
+ pref_service_->registry()->RegisterDictionaryPref( |
+ prefs::kWebShareVisitedTargets); |
+ } |
+ |
+ void AddShareTarget(std::string manifest_url, std::string url_template) { |
+ DictionaryPrefUpdate update(GetPrefService(), |
+ prefs::kWebShareVisitedTargets); |
+ base::DictionaryValue* share_target_dict = update.Get(); |
+ |
+ std::unique_ptr<base::DictionaryValue> origin_dict( |
+ new base::DictionaryValue); |
+ |
+ constexpr char kUrlTemplateKey[] = "url_template"; |
+ origin_dict->SetStringWithoutPathExpansion(kUrlTemplateKey, url_template); |
+ |
+ share_target_dict->SetWithoutPathExpansion(manifest_url, |
+ std::move(origin_dict)); |
+ } |
+ |
+ void AddEngagementForTarget(std::string manifest_url, |
+ blink::mojom::EngagementLevel level) { |
+ engagement_map[manifest_url] = level; |
+ } |
+ |
+ void ClearEngagements() { engagement_map.clear(); } |
+ |
const std::string& GetLastUsedTargetURL() { return last_used_target_url_; } |
private: |
base::Optional<base::string16> picker_result_ = base::nullopt; |
std::string last_used_target_url_; |
+ std::unique_ptr<TestingPrefServiceSimple> pref_service_; |
+ std::map<std::string, blink::mojom::EngagementLevel> engagement_map; |
void ShowPickerDialog( |
const std::vector<base::string16>& targets, |
const base::Callback<void(base::Optional<base::string16>)>& callback) |
override { |
+ // TODO check targets were what was expected. |
Matt Giuca
2017/02/01 07:30:20
Should this be done?
constantina
2017/02/02 00:43:48
Yep, will do in next patch.
|
callback.Run(picker_result_); |
} |
void OpenTargetURL(const GURL& target_url) override { |
last_used_target_url_ = target_url.spec(); |
} |
+ |
+ PrefService* GetPrefService() override { return pref_service_.get(); } |
+ |
+ blink::mojom::EngagementLevel GetEngagementLevel(GURL url) override { |
+ return engagement_map[url.spec()]; |
+ } |
}; |
class ShareServiceImplUnittest : public ChromeRenderViewHostTestHarness { |
@@ -65,9 +106,13 @@ class ShareServiceImplUnittest : public ChromeRenderViewHostTestHarness { |
share_service_helper_ = |
ShareServiceTestImpl::Create(mojo::MakeRequest(&share_service_)); |
+ share_service_helper_->SetUpPrefs(); |
} |
- void TearDown() override { ChromeRenderViewHostTestHarness::TearDown(); } |
+ void TearDown() override { |
+ ChromeRenderViewHostTestHarness::TearDown(); |
+ share_service_helper_->ClearEngagements(); |
+ } |
void DidShare(const std::string& expected_target_url, |
const base::Optional<std::string>& expected_param, |
@@ -90,14 +135,18 @@ class ShareServiceImplUnittest : public ChromeRenderViewHostTestHarness { |
// Basic test to check the Share method calls the callback with the expected |
// parameters. |
TEST_F(ShareServiceImplUnittest, ShareCallbackParams) { |
+ std::string base_url = "https://wicg.github.io/web-share-target/demos/"; |
+ std::string url_template = |
+ "sharetarget.html?title={title}&text={text}&url={url}"; |
std::string expected_url = |
"https://wicg.github.io/web-share-target/demos/" |
"sharetarget.html?title=My%20title&text=My%20text&url=https%3A%2F%2Fwww." |
"google.com%2F"; |
- share_service_helper_->set_picker_result( |
- base::ASCIIToUTF16("https://wicg.github.io/web-share-target/demos/")); |
+ share_service_helper_->set_picker_result(base::ASCIIToUTF16(base_url)); |
+ share_service_helper_->AddShareTarget(base_url, url_template); |
+ share_service_helper_->AddEngagementForTarget( |
+ base_url, blink::mojom::EngagementLevel::LOW); |
- const GURL url(kUrlSpec); |
base::Callback<void(const base::Optional<std::string>&)> callback = |
base::Bind(&ShareServiceImplUnittest::DidShare, base::Unretained(this), |
expected_url, base::Optional<std::string>()); |
@@ -105,6 +154,7 @@ TEST_F(ShareServiceImplUnittest, ShareCallbackParams) { |
base::RunLoop run_loop; |
on_callback_ = run_loop.QuitClosure(); |
+ const GURL url(kUrlSpec); |
share_service_->Share(kTitle, kText, url, callback); |
run_loop.Run(); |