blob: 79718ebdc5c3c9ea897acf607251a0307b944c6f [file] [log] [blame]
drogerf83b91262015-03-05 19:45:191// Copyright 2015 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// This file can be empty. Its purpose is to contain the relatively short lived
6// definitions required for experimental flags.
7
8#include "ios/chrome/browser/experimental_flags.h"
9
sdefresne60feea12015-06-04 08:39:5110#import <Foundation/Foundation.h>
11
lpromero68537272015-04-29 11:16:0112#include <string>
13
drogerf83b91262015-03-05 19:45:1914#include "base/command_line.h"
lpromero68537272015-04-29 11:16:0115#include "base/metrics/field_trial.h"
16#include "base/strings/string_number_conversions.h"
sdefresneb53a9872015-05-18 20:01:4917#include "base/strings/string_util.h"
lpromero68537272015-04-29 11:16:0118#include "components/variations/variations_associated_data.h"
drogerf83b91262015-03-05 19:45:1919#include "ios/chrome/browser/chrome_switches.h"
sdefresne60feea12015-06-04 08:39:5120#include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
bzanottia5f249ed2015-06-24 10:02:5921#include "ios/web/public/web_view_creation_util.h"
drogerf83b91262015-03-05 19:45:1922
sdefresne8b192a72015-05-13 13:25:1923namespace {
24NSString* const kEnableAlertOnBackgroundUpload =
25 @"EnableAlertsOnBackgroundUpload";
sdefresne60feea12015-06-04 08:39:5126NSString* const kEnableBookmarkRefreshImageOnEachVisit =
27 @"EnableBookmarkRefreshImageOnEachVisit";
sdefresne8b192a72015-05-13 13:25:1928} // namespace
29
drogerf83b91262015-03-05 19:45:1930namespace experimental_flags {
31
sdefresne8b192a72015-05-13 13:25:1932bool IsAlertOnBackgroundUploadEnabled() {
33 return [[NSUserDefaults standardUserDefaults]
34 boolForKey:kEnableAlertOnBackgroundUpload];
35}
36
sdefresne60feea12015-06-04 08:39:5137bool IsBookmarkCollectionEnabled() {
38 return ios::GetChromeBrowserProvider()->IsBookmarkCollectionEnabled();
39}
40
41bool IsBookmarkImageFetchingOnVisitEnabled() {
42 if (!IsBookmarkCollectionEnabled())
43 return false;
44
45 NSUserDefaults* user_defaults = [NSUserDefaults standardUserDefaults];
46 if ([user_defaults boolForKey:kEnableBookmarkRefreshImageOnEachVisit])
47 return true;
48
49 const char kFieldTrialName[] = "EnhancedBookmarks";
50 std::string enable_fetching = variations::GetVariationParamValue(
51 kFieldTrialName, "EnableImagesFetchingOnVisit");
52 return !enable_fetching.empty();
53}
54
sdefresneb53a9872015-05-18 20:01:4955bool IsWKWebViewEnabled() {
56 // If WKWebView isn't supported, don't activate the experiment at all. This
57 // avoids someone being slotted into the WKWebView bucket (and thus reporting
58 // as WKWebView), but actually running UIWebView.
59 if (!web::IsWKWebViewSupported())
60 return false;
61
62 std::string group_name =
63 base::FieldTrialList::FindFullName("IOSUseWKWebView");
64
65 // First check if the experimental flag is turned on.
66 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
67 if (command_line->HasSwitch(switches::kEnableIOSWKWebView)) {
68 return true;
69 } else if (command_line->HasSwitch(switches::kDisableIOSWKWebView)) {
70 return false;
71 }
72
73 // Check if the finch experiment is turned on.
brettw44ce0ec52015-06-12 01:57:5774 return base::StartsWithASCII(group_name, "Enabled", false);
sdefresneb53a9872015-05-18 20:01:4975}
76
lpromero68537272015-04-29 11:16:0177size_t MemoryWedgeSizeInMB() {
78 std::string wedge_size_string;
79
80 // Get the size from the Experimental setting.
81 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
82 wedge_size_string =
83 command_line->GetSwitchValueASCII(switches::kIOSMemoryWedgeSize);
84
85 // Otherwise, get from a variation param.
86 if (wedge_size_string.empty()) {
87 wedge_size_string =
88 variations::GetVariationParamValue("MemoryWedge", "wedge_size");
89 }
90
91 // Parse the value.
92 size_t wedge_size_in_mb = 0;
93 if (base::StringToSizeT(wedge_size_string, &wedge_size_in_mb))
94 return wedge_size_in_mb;
95 return 0;
96}
97
drogerf83b91262015-03-05 19:45:1998} // namespace experimental_flags