Chromium Code Reviews| Index: chrome/browser/android/banners/app_banner_manager.cc |
| diff --git a/chrome/browser/android/banners/app_banner_manager.cc b/chrome/browser/android/banners/app_banner_manager.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..fd33cbf8b9ac4db3fd761f6680ec15d4acde4484 |
| --- /dev/null |
| +++ b/chrome/browser/android/banners/app_banner_manager.cc |
| @@ -0,0 +1,76 @@ |
| +// 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 "chrome/browser/android/banners/app_banner_manager.h" |
| + |
| +#include "base/android/jni_android.h" |
| +#include "base/android/jni_string.h" |
| +#include "base/command_line.h" |
| +#include "chrome/browser/android/banners/app_banner_settings_helper.h" |
| +#include "chrome/browser/profiles/profile.h" |
| +#include "chrome/common/chrome_switches.h" |
| +#include "content/public/browser/android/content_view_core.h" |
| +#include "content/public/browser/navigation_details.h" |
| +#include "content/public/browser/web_contents.h" |
| +#include "content/public/common/frame_navigate_params.h" |
| +#include "jni/AppBannerManager_jni.h" |
| +#include "ui/gfx/android/java_bitmap.h" |
| + |
| +using base::android::ConvertJavaStringToUTF8; |
| +using base::android::ConvertUTF8ToJavaString; |
| + |
| +AppBannerManager::AppBannerManager(JNIEnv* env, jobject obj) |
| + : MetaTagObserver("google-play-id"), |
|
Ted C
2014/02/11 17:48:45
should this be a static?
gone
2014/02/11 19:04:14
Done.
|
| + weak_java_banner_view_manager_(env, obj) {} |
| + |
| +AppBannerManager::~AppBannerManager() { |
| + weak_java_banner_view_manager_.reset(); |
|
Ted C
2014/02/11 17:48:45
won't this happen in the destructor of the java we
gone
2014/02/11 19:04:14
Done.
|
| +} |
| + |
| +void AppBannerManager::Destroy(JNIEnv* env, jobject obj) { delete this; } |
|
Ted C
2014/02/11 17:48:45
This looks odd to me. I would probably put the de
gone
2014/02/11 19:04:14
Done.
|
| + |
| +void AppBannerManager::ReplaceWebContents(JNIEnv* env, |
| + jobject obj, |
| + jlong native_content_view_core) { |
| + content::ContentViewCore* content_view_core = |
| + reinterpret_cast<content::ContentViewCore*>(native_content_view_core); |
| + if (web_contents() != content_view_core->GetWebContents()) |
|
Ted C
2014/02/11 17:48:45
looks like web_contents_observer already does this
gone
2014/02/11 19:04:14
Done.
|
| + Observe(content_view_core->GetWebContents()); |
| +} |
| + |
| +void AppBannerManager::DidNavigateMainFrame( |
| + const content::LoadCommittedDetails& details, |
| + const content::FrameNavigateParams& params) { |
| + // TODO(dfalcantara): Get rid of the current banner. |
| +} |
| + |
| +void AppBannerManager::HandleMetaTagContent(const std::string& tag_content, |
| + const GURL& expected_url) { |
| + if (!web_contents() || !AppBannerSettingsHelper::IsAllowed( |
| + web_contents(), expected_url, tag_content)) { |
|
Ted C
2014/02/11 17:48:45
This also looks odd to me. Maybe:
!AppBannerSetti
gone
2014/02/11 19:04:14
Formatter sure is fond of doing weird things.
|
| + return; |
| + } |
| + |
| + request_url_ = GURL(expected_url); |
|
Ted C
2014/02/11 17:48:45
Do you actually need to store these in native? Se
gone
2014/02/11 19:04:14
They're needed for the rest of the async pipeline,
|
| + request_package_ = tag_content; |
| + |
| + // TODO(dfalcantara): Send the info to the Java side to begin building the |
| + // app banner. |
| +} |
| + |
| +jlong Init(JNIEnv* env, jobject obj) { |
| + AppBannerManager* manager = new AppBannerManager(env, obj); |
| + return reinterpret_cast<intptr_t>(manager); |
| +} |
| + |
| +jboolean IsEnabled(JNIEnv* env, jclass clazz) { |
| + return false; |
| + |
| + // TODO(dfalcantara): Enable this when more of the pipeline is checked in. |
| + // return !CommandLine::ForCurrentProcess()->HasSwitch( |
| + // switches::kDisableAppBanners); |
| +} |
| + |
| +// Register native methods |
| +bool RegisterAppBannerManager(JNIEnv* env) { return RegisterNativesImpl(env); } |
|
Ted C
2014/02/11 17:48:45
same comment about the delete above. I don't see
gone
2014/02/11 19:04:14
Yay formatter!
|