Chromium Code Reviews| Index: chrome/browser/android/banners/app_banner_data_fetcher_android.cc |
| diff --git a/chrome/browser/android/banners/app_banner_data_fetcher_android.cc b/chrome/browser/android/banners/app_banner_data_fetcher_android.cc |
| index bc0662e525468c2699d13089971faae2f81b167d..a35f5802282766f11c6579f2f13508a12ccacc8b 100644 |
| --- a/chrome/browser/android/banners/app_banner_data_fetcher_android.cc |
| +++ b/chrome/browser/android/banners/app_banner_data_fetcher_android.cc |
| @@ -4,10 +4,24 @@ |
| #include "chrome/browser/android/banners/app_banner_data_fetcher_android.h" |
| +#include <vector> |
| + |
| +#include "base/strings/string_util.h" |
| #include "chrome/browser/android/banners/app_banner_infobar_delegate.h" |
| #include "chrome/browser/ui/android/infobars/app_banner_infobar.h" |
| +#include "chrome/common/chrome_constants.h" |
| +#include "chrome/common/render_messages.h" |
| #include "third_party/skia/include/core/SkBitmap.h" |
| +namespace { |
| + |
| +const char kMetaViewportTagName[] = "viewport"; |
|
gone
2015/05/27 22:53:35
Should ask Paul Kinlan about formatting. Curious
dominickn (DO NOT USE)
2015/06/05 07:42:59
Ben found some code in the compositor which seems
|
| +const char kMetaViewportWidthDevice[] = "width=device-width"; |
| +const char kMetaViewportInitialScaleInt[] = "initial-scale=1"; |
| +const char kMetaViewportInitialScaleFloat[] = "initial-scale=1.0"; |
| + |
| +} // anonymous namespace |
| + |
| namespace banners { |
| AppBannerDataFetcherAndroid::AppBannerDataFetcherAndroid( |
| @@ -36,6 +50,26 @@ bool AppBannerDataFetcherAndroid::ContinueFetching( |
| return FetchIcon(image_url); |
| } |
| +bool AppBannerDataFetcherAndroid::OnMessageReceived( |
| + const IPC::Message& message) { |
| + bool handled = true; |
| + IPC_BEGIN_MESSAGE_MAP(AppBannerDataFetcherAndroid, message) |
| + IPC_MESSAGE_HANDLER(ChromeViewHostMsg_DidRetrieveMetaTagContent, |
| + OnDidRetrieveMetaTagContent) |
| + IPC_MESSAGE_UNHANDLED(handled = false) |
| + IPC_END_MESSAGE_MAP() |
| + return handled; |
| +} |
| + |
| +void AppBannerDataFetcherAndroid::Start(const GURL& validated_url) { |
| + validated_url_ = validated_url; |
| + is_active_ = true; |
| + is_responsive_ = false; |
| + |
| + Send(new ChromeViewMsg_RetrieveMetaTagContent(routing_id(), validated_url, |
| + kMetaViewportTagName)); |
| +} |
| + |
| std::string AppBannerDataFetcherAndroid::GetAppIdentifier() { |
| return native_app_data_.is_null() |
| ? AppBannerDataFetcher::GetAppIdentifier() : native_app_package_; |
| @@ -73,4 +107,33 @@ infobars::InfoBar* AppBannerDataFetcherAndroid::CreateBanner( |
| return infobar; |
| } |
| +void AppBannerDataFetcherAndroid::OnDidRetrieveMetaTagContent( |
| + bool success, |
| + const std::string& tag_name, |
| + const std::string& tag_content, |
| + const GURL& expected_url) { |
| + |
|
gone
2015/05/27 22:53:35
nit: remove newline
|
| + if (success && tag_name == kMetaViewportTagName && |
| + validated_url_ == expected_url && |
| + tag_content.size() <= chrome::kMaxMetaTagAttributeLength) { |
| + std::string local_tag_content; |
| + std::vector<std::string> content_tokens; |
| + |
| + base::RemoveChars(tag_content, " ", &local_tag_content); |
| + base::StringToLowerASCII(&local_tag_content); |
| + Tokenize(local_tag_content, ",", &content_tokens); |
| + |
| + for (auto property : content_tokens) { |
| + if (property == kMetaViewportWidthDevice || |
| + property == kMetaViewportInitialScaleInt || |
| + property == kMetaViewportInitialScaleFloat) { |
| + is_responsive_ = true; |
| + break; |
| + } |
| + } |
| + } |
| + |
| + AppBannerDataFetcher::Start(validated_url_); |
| +} |
| + |
| } // namespace banners |