Index: content/renderer/installedapp/web_installed_app_impl.cc |
diff --git a/content/renderer/installedapp/web_installed_app_impl.cc b/content/renderer/installedapp/web_installed_app_impl.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b7a796fd419b9f2de996889b282e758ddc651c0d |
--- /dev/null |
+++ b/content/renderer/installedapp/web_installed_app_impl.cc |
@@ -0,0 +1,114 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/logging.h" |
+#include "base/strings/utf_string_conversions.h" |
+#include "content/renderer/render_thread_impl.h" |
+#include "content/renderer/installedapp/web_installed_app_impl.h" |
+ |
+namespace content { |
+ |
+WebInstalledAppImpl::WebInstalledAppImpl() {} |
+ |
+WebInstalledAppImpl::~WebInstalledAppImpl() {} |
+ |
+void WebInstalledAppImpl::isAppInstalled( |
+ const blink::WebString& asset1, |
+ const blink::WebString& asset2, |
+ const blink::WebString& origin, |
+ blink::AppInstalledCallbacks* raw_callbacks) { |
+ scoped_ptr<blink::AppInstalledCallbacks> callbacks(raw_callbacks); |
+ LOG(WARNING) << asset1.utf8(); |
+ LOG(WARNING) << asset2.utf8(); |
+ |
+ GetProvider()->IsAppInstalled( |
+ mojo::String(asset1.utf8()), mojo::String(asset2.utf8()), |
+ mojo::String(origin.utf8()), |
+ base::Bind(&WebInstalledAppImpl::OnIsAppInstalled, base::Unretained(this), |
+ base::Passed(&callbacks))); |
+} |
+ |
+void WebInstalledAppImpl::isNativeAppInstalled( |
+ const blink::WebInstalledAppVerificationManager& manager, |
+ const blink::WebString& origin, |
+ blink::AppInstalledCallbacks* raw_callbacks) { |
+ scoped_ptr<blink::AppInstalledCallbacks> callbacks(raw_callbacks); |
+ mojo::Map<mojo::String, mojo::Array<mojo::String>> validStrings; |
+ // We can collate these into just an array of interesting string names. |
+ // This will allow us to send a smaller Mojo map into Mojo. |
+ blink::WebString packageName = manager.androidPackageName(); |
+ mojo::Array<mojo::String> androidPackageName; |
+ androidPackageName.push_back(mojo::String(packageName.utf8())); |
+ validStrings.insert(mojo::String("packageName"), |
+ std::move(androidPackageName)); |
+ |
+ blink::WebVector<blink::WebString> signingKeyArray = |
+ manager.androidSigningKeys(); |
+ mojo::Array<mojo::String> keys; |
+ for (blink::WebVector<blink::WebString>::iterator it = |
+ signingKeyArray.begin(); |
+ it != signingKeyArray.end(); ++it) { |
+ keys.push_back(it->utf8()); |
+ LOG(WARNING) << it->utf8(); |
+ } |
+ validStrings.insert(mojo::String("signingKey"), std::move(keys)); |
+ // // We need to make this able to handle the possibility of it being an |
+ // array. |
+ // if (manager.get("packageName", packageName)) { |
+ // LOG(WARNING) << packageName.utf8(); |
+ // mojo::Array<mojo::String> keys; |
+ // keys.push_back(mojo::String(packageName.utf8())); |
+ // validStrings.insert(mojo::String("packageName"), std::move(keys)); |
+ // } |
+ // |
+ // blink::WebString signingKey; |
+ // blink::WebVector<blink::WebString> signingKeyArray; |
+ // if (manager.get("signingKey", signingKeyArray)) { |
+ // LOG(WARNING) << "Found a signing key array."; |
+ // mojo::Array<mojo::String> keys; |
+ // for (blink::WebVector<blink::WebString>::iterator it = |
+ // signingKeyArray.begin(); it != signingKeyArray.end(); ++it) { |
+ // keys.push_back(it->utf8()); |
+ // LOG(WARNING) << it->utf8(); |
+ // } |
+ // validStrings.insert(mojo::String("signingKey"), std::move(keys)); |
+ // } |
+ // else if (manager.get("signingKey", signingKey)) { |
+ // LOG(WARNING) << signingKey.utf8(); |
+ // mojo::Array<mojo::String> keys; |
+ // keys.push_back(mojo::String(signingKey.utf8())); |
+ // validStrings.insert(mojo::String("signingKey"), std::move(keys)); |
+ // } |
+ // |
+ // LOG(WARNING) << packageName.utf8(); |
+ // LOG(WARNING) << signingKey.utf8(); |
+ |
+ GetProvider()->IsNativeAppInstalled( |
+ std::move(validStrings), mojo::String(origin.utf8()), |
+ base::Bind(&WebInstalledAppImpl::OnIsNativeAppInstalled, |
+ base::Unretained(this), base::Passed(&callbacks))); |
+} |
+ |
+components::InstalledAppProviderPtr& WebInstalledAppImpl::GetProvider() { |
+ if (!provider_) { |
+ RenderThread::Get()->GetServiceRegistry()->ConnectToRemoteService( |
+ mojo::GetProxy(&provider_)); |
+ } |
+ return provider_; |
+} |
+ |
+void WebInstalledAppImpl::OnIsAppInstalled( |
+ scoped_ptr<blink::AppInstalledCallbacks> callbacks, |
+ bool result) { |
+ callbacks->onSuccess(result); |
+} |
+ |
+void WebInstalledAppImpl::OnIsNativeAppInstalled( |
+ scoped_ptr<blink::AppInstalledCallbacks> callbacks, |
+ bool result) { |
+ LOG(WARNING) << "aww yeah"; |
+ callbacks->onSuccess(result); |
+} |
+ |
+} // namespace content |