Commit 75faa51c authored by Henrique Nakashima's avatar Henrique Nakashima Committed by Commit Bot

Split ChromeSessionState out FeatureUtilities.

This is a part of FeatureUtilities that has no cohesion with the rest
of its responsibilities.

Bug: 1012975
Change-Id: Iaef2b7c7b2e57ec5a43eb8ff168e832bf567e8fb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1999332Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Cr-Commit-Position: refs/heads/master@{#732182}
parent 51dadb39
......@@ -544,11 +544,11 @@ action("chrome_android_java_google_api_keys_srcjar") {
java_cpp_enum("chrome_android_java_enums_srcjar") {
sources = [
"//chrome/browser/android/chrome_session_state.h",
"//chrome/browser/android/customtabs/detached_resource_request.h",
"//chrome/browser/android/digital_asset_links/digital_asset_links_handler.h",
"//chrome/browser/android/explore_sites/explore_sites_bridge.h",
"//chrome/browser/android/explore_sites/explore_sites_feature.h",
"//chrome/browser/android/feature_utilities.h",
"//chrome/browser/android/feedback/connectivity_checker.cc",
"//chrome/browser/android/policy/policy_auditor.cc",
"//chrome/browser/android/shortcut_info.h",
......@@ -2622,6 +2622,7 @@ generate_jni("chrome_jni_headers") {
"java/src/org/chromium/chrome/browser/feedback/SystemInfoFeedbackSource.java",
"java/src/org/chromium/chrome/browser/findinpage/FindInPageBridge.java",
"java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java",
"java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java",
"java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java",
"java/src/org/chromium/chrome/browser/gesturenav/CompositorNavigationGlow.java",
"java/src/org/chromium/chrome/browser/history/BrowsingHistoryBridge.java",
......
......@@ -740,6 +740,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/firstrun/TabbedModeFirstRunActivity.java",
"java/src/org/chromium/chrome/browser/firstrun/ToSAckedReceiver.java",
"java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java",
"java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java",
"java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java",
"java/src/org/chromium/chrome/browser/fullscreen/BrowserStateBrowserControlsVisibilityDelegate.java",
"java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java",
......
......@@ -85,7 +85,7 @@ import org.chromium.chrome.browser.download.items.OfflineContentAggregatorNotifi
import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
import org.chromium.chrome.browser.firstrun.ForcedSigninProcessor;
import org.chromium.chrome.browser.flags.ActivityType;
import org.chromium.chrome.browser.flags.FeatureUtilities;
import org.chromium.chrome.browser.flags.ChromeSessionState;
import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
import org.chromium.chrome.browser.fullscreen.ComposedBrowserControlsVisibilityDelegate;
import org.chromium.chrome.browser.gsa.ContextReporter;
......@@ -907,9 +907,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
if (webContents != null) webContents.notifyRendererPreferenceUpdate();
}
FeatureUtilities.setCustomTabVisible(isCustomTab());
FeatureUtilities.setActivityType(getActivityType());
FeatureUtilities.setIsInMultiWindowMode(
ChromeSessionState.setCustomTabVisible(isCustomTab());
ChromeSessionState.setActivityType(getActivityType());
ChromeSessionState.setIsInMultiWindowMode(
MultiWindowUtils.getInstance().isInMultiWindowMode(this));
if (mPictureInPictureController != null) {
......@@ -1876,7 +1876,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
// stays in that state.
markSessionEnd();
markSessionResume();
FeatureUtilities.setIsInMultiWindowMode(
ChromeSessionState.setIsInMultiWindowMode(
MultiWindowUtils.getInstance().isInMultiWindowMode(this));
}
}
......
// Copyright 2020 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.
package org.chromium.chrome.browser.flags;
import org.chromium.base.annotations.NativeMethods;
/**
* Stores high-level state about a session for metrics logging.
*/
public class ChromeSessionState {
/**
* Records the current custom tab visibility state with native-side feature utilities.
* @param visible Whether a custom tab is visible.
*/
public static void setCustomTabVisible(boolean visible) {
ChromeSessionStateJni.get().setCustomTabVisible(visible);
}
/**
* Records whether the activity is in multi-window mode with native-side feature utilities.
* @param isInMultiWindowMode Whether the activity is in Android N multi-window mode.
*/
public static void setIsInMultiWindowMode(boolean isInMultiWindowMode) {
ChromeSessionStateJni.get().setIsInMultiWindowMode(isInMultiWindowMode);
}
/**
* Records the type of the currently visible Activity for metrics.
* @param activityType The type of the Activity.
*/
public static void setActivityType(@ActivityType int activityType) {
ChromeSessionStateJni.get().setActivityType(activityType);
}
@NativeMethods
interface Natives {
void setCustomTabVisible(boolean visible);
void setActivityType(@ActivityType int type);
void setIsInMultiWindowMode(boolean isInMultiWindowMode);
}
}
......@@ -84,30 +84,6 @@ public class FeatureUtilities {
return sHasRecognitionIntentHandler;
}
/**
* Records the current custom tab visibility state with native-side feature utilities.
* @param visible Whether a custom tab is visible.
*/
public static void setCustomTabVisible(boolean visible) {
FeatureUtilitiesJni.get().setCustomTabVisible(visible);
}
/**
* Records whether the activity is in multi-window mode with native-side feature utilities.
* @param isInMultiWindowMode Whether the activity is in Android N multi-window mode.
*/
public static void setIsInMultiWindowMode(boolean isInMultiWindowMode) {
FeatureUtilitiesJni.get().setIsInMultiWindowMode(isInMultiWindowMode);
}
/**
* Records the type of the currently visible Activity for metrics.
* @param activityType The type of the Activity.
*/
public static void setActivityType(@ActivityType int activityType) {
FeatureUtilitiesJni.get().setActivityType(activityType);
}
/**
* Caches flags that must take effect on startup but are set via native code.
*/
......@@ -773,9 +749,6 @@ public class FeatureUtilities {
@NativeMethods
interface Natives {
void setCustomTabVisible(boolean visible);
void setActivityType(@ActivityType int type);
void setIsInMultiWindowMode(boolean isInMultiWindowMode);
boolean isNetworkServiceWarmUpEnabled();
}
}
......@@ -2303,6 +2303,8 @@ jumbo_static_library("browser") {
"android/chrome_context_util.h",
"android/chrome_feature_list.cc",
"android/chrome_feature_list.h",
"android/chrome_session_state.cc",
"android/chrome_session_state.h",
"android/chrome_startup_flags.cc",
"android/chrome_startup_flags.h",
"android/color_helpers.cc",
......
// Copyright 2020 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/chrome_session_state.h"
#include "chrome/android/chrome_jni_headers/ChromeSessionState_jni.h"
#include "services/metrics/public/cpp/ukm_source.h"
using chrome::android::ActivityType;
namespace {
bool custom_tab_visible = false;
ActivityType activity_type = ActivityType::kTabbed;
bool is_in_multi_window_mode = false;
} // namespace
namespace chrome {
namespace android {
CustomTabsVisibilityHistogram GetCustomTabsVisibleValue() {
return custom_tab_visible ? VISIBLE_CUSTOM_TAB : VISIBLE_CHROME_TAB;
}
ActivityType GetActivityType() {
return activity_type;
}
bool GetIsInMultiWindowModeValue() {
return is_in_multi_window_mode;
}
} // namespace android
} // namespace chrome
static void JNI_ChromeSessionState_SetCustomTabVisible(JNIEnv* env,
jboolean visible) {
custom_tab_visible = visible;
ukm::UkmSource::SetCustomTabVisible(visible);
}
static void JNI_ChromeSessionState_SetActivityType(JNIEnv* env, jint type) {
activity_type = static_cast<ActivityType>(type);
// TODO(peconn): Look into adding this for UKM as well.
}
static void JNI_ChromeSessionState_SetIsInMultiWindowMode(
JNIEnv* env,
jboolean j_is_in_multi_window_mode) {
is_in_multi_window_mode = j_is_in_multi_window_mode;
}
// Copyright 2020 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.
#ifndef CHROME_BROWSER_ANDROID_CHROME_SESSION_STATE_H_
#define CHROME_BROWSER_ANDROID_CHROME_SESSION_STATE_H_
#include <jni.h>
namespace chrome {
namespace android {
enum CustomTabsVisibilityHistogram {
VISIBLE_CUSTOM_TAB,
VISIBLE_CHROME_TAB,
CUSTOM_TABS_VISIBILITY_MAX
};
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.flags
enum class ActivityType {
kTabbed,
kCustomTab,
kTrustedWebActivity,
kWebapp,
kWebApk,
kMaxValue = kWebApk,
};
CustomTabsVisibilityHistogram GetCustomTabsVisibleValue();
ActivityType GetActivityType();
bool GetIsInMultiWindowModeValue();
} // namespace android
} // namespace chrome
#endif // CHROME_BROWSER_ANDROID_CHROME_SESSION_STATE_H_
......@@ -7,40 +7,16 @@
#include "chrome/android/chrome_jni_headers/FeatureUtilities_jni.h"
#include "base/android/jni_string.h"
#include "chrome/browser/ntp_snippets/content_suggestions_service_factory.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "components/ntp_snippets/content_suggestions_service.h"
#include "content/public/common/content_features.h"
#include "content/public/common/network_service_util.h"
#include "services/metrics/public/cpp/ukm_source.h"
using base::android::ConvertJavaStringToUTF8;
using base::android::JavaParamRef;
using base::android::ScopedJavaLocalRef;
using chrome::android::ActivityType;
namespace {
bool custom_tab_visible = false;
ActivityType activity_type = ActivityType::kTabbed;
bool is_in_multi_window_mode = false;
} // namespace
namespace chrome {
namespace android {
CustomTabsVisibilityHistogram GetCustomTabsVisibleValue() {
return custom_tab_visible ? VISIBLE_CUSTOM_TAB :
VISIBLE_CHROME_TAB;
}
ActivityType GetActivityType() {
return activity_type;
}
bool GetIsInMultiWindowModeValue() {
return is_in_multi_window_mode;
}
bool IsDownloadAutoResumptionEnabledInNative() {
JNIEnv* env = base::android::AttachCurrentThread();
return Java_FeatureUtilities_isDownloadAutoResumptionEnabledInNative(env);
......@@ -56,24 +32,6 @@ std::string GetReachedCodeProfilerTrialGroup() {
} // namespace android
} // namespace chrome
static void JNI_FeatureUtilities_SetCustomTabVisible(
JNIEnv* env,
jboolean visible) {
custom_tab_visible = visible;
ukm::UkmSource::SetCustomTabVisible(visible);
}
static void JNI_FeatureUtilities_SetActivityType(JNIEnv* env, jint type) {
activity_type = static_cast<ActivityType>(type);
// TODO(peconn): Look into adding this for UKM as well.
}
static void JNI_FeatureUtilities_SetIsInMultiWindowMode(
JNIEnv* env,
jboolean j_is_in_multi_window_mode) {
is_in_multi_window_mode = j_is_in_multi_window_mode;
}
static jboolean JNI_FeatureUtilities_IsNetworkServiceWarmUpEnabled(
JNIEnv* env) {
return content::IsOutOfProcessNetworkService() &&
......
......@@ -12,28 +12,6 @@
namespace chrome {
namespace android {
enum CustomTabsVisibilityHistogram {
VISIBLE_CUSTOM_TAB,
VISIBLE_CHROME_TAB,
CUSTOM_TABS_VISIBILITY_MAX
};
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.flags
enum class ActivityType {
kTabbed,
kCustomTab,
kTrustedWebActivity,
kWebapp,
kWebApk,
kMaxValue = kWebApk,
};
CustomTabsVisibilityHistogram GetCustomTabsVisibleValue();
ActivityType GetActivityType();
bool GetIsInMultiWindowModeValue();
bool IsDownloadAutoResumptionEnabledInNative();
// Returns a finch group name currently used for the reached code profiler.
......
......@@ -7,7 +7,7 @@
#include "base/feature_list.h"
#include "base/metrics/histogram_macros.h"
#include "chrome/android/chrome_jni_headers/NotificationSystemStatusUtil_jni.h"
#include "chrome/browser/android/feature_utilities.h"
#include "chrome/browser/android/chrome_session_state.h"
#include "chrome/browser/android/locale/locale_manager.h"
#include "chrome/browser/android/metrics/uma_session_stats.h"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment