1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
/*
* Copyright (c) 2014, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
package com.android.browser;
import com.android.browser.R;
import java.util.Locale;
import android.os.Build;
import android.content.Context;
import android.text.TextUtils;
import org.codeaurora.swe.BrowserCommandLine;
abstract class BrowserConfigBase {
private static final String OVERRIDE_USER_AGENT = "user-agent";
private Context mContext;
public BrowserConfigBase(Context context) {
mContext = context;
}
public void overrideUserAgent() {
// Check if the UA is already present using command line file
if (BrowserCommandLine.hasSwitch(OVERRIDE_USER_AGENT)) {
return;
}
String ua = mContext.getResources().getString(R.string.def_useragent);
if (TextUtils.isEmpty(ua))
return;
ua = constructUserAgent(ua);
if (!TextUtils.isEmpty(ua)){
BrowserCommandLine.appendSwitchWithValue(OVERRIDE_USER_AGENT, ua);
}
}
public void initCommandLineSwitches() {
//SWE-hide-title-bar - enable following flags
BrowserCommandLine.appendSwitch("enable-top-controls-position-calculation");
BrowserCommandLine.appendSwitchWithValue("top-controls-height", "52");
BrowserCommandLine.appendSwitchWithValue("top-controls-show-threshold", "0.5");
BrowserCommandLine.appendSwitchWithValue("top-controls-hide-threshold", "0.5");
// Allow to override UserAgent
overrideUserAgent();
}
private String constructUserAgent(String userAgent) {
try {
userAgent = userAgent.replaceAll("<%build_model>", Build.MODEL);
userAgent = userAgent.replaceAll("<%build_version>", Build.VERSION.RELEASE);
userAgent = userAgent.replaceAll("<%build_id>", Build.ID);
userAgent = userAgent.replaceAll("<%language>", Locale.getDefault().getLanguage());
userAgent = userAgent.replaceAll("<%country>", Locale.getDefault().getCountry());
return userAgent;
} catch (Exception ex) {
return null;
}
}
public static enum Feature {
WAP2ESTORE, /* Launch custom app when URL scheme is 'estore:' */
DRM_UPLOADS, /* Prevent uploading files with DRM filename extensions */
NETWORK_NOTIFIER, /* Prompt user to select WiFi access point or otherwise enable WLAN */
EXIT_DIALOG, /* Add 'Exit' menu item and show 'Minimize or quit' dialog */
TITLE_IN_URL_BAR, /* Display page title instead of url in URL bar */
CUSTOM_DOWNLOAD_PATH, /* Allow users to provide custom download path */
ALLOW_MEDIA_DOWNLOADS, /* Add 'Allow media downloads' menu item */
DISABLE_HISTORY /* Allow disabling saving history for non-incognito tabs */
}
public boolean hasFeature(Feature feature) {
switch (feature) {
case WAP2ESTORE:
return mContext.getResources().getBoolean(R.bool.feature_wap2estore);
case DRM_UPLOADS:
return mContext.getResources().getBoolean(R.bool.feature_drm_uploads);
case NETWORK_NOTIFIER:
return mContext.getResources().getBoolean(R.bool.feature_network_notifier);
case EXIT_DIALOG:
return mContext.getResources().getBoolean(R.bool.feature_exit_dialog);
case TITLE_IN_URL_BAR:
return mContext.getResources().getBoolean(R.bool.feature_title_in_URL_bar);
case CUSTOM_DOWNLOAD_PATH:
return mContext.getResources().getBoolean(R.bool.feature_custom_download_path);
case ALLOW_MEDIA_DOWNLOADS:
return mContext.getResources().getBoolean(R.bool.feature_allow_media_downloads);
case DISABLE_HISTORY:
return mContext.getResources().getBoolean(R.bool.feature_disable_history);
default:
return false;
}
}
}
|