Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.

Commit 4af0b93

Browse files
author
Wes Johnston
committed
Bug 778216 - Add a pref to show the url instead of title. r=mfinkle
1 parent 0dc0f0f commit 4af0b93

5 files changed

Lines changed: 84 additions & 4 deletions

File tree

mobile/android/base/BrowserToolbar.java

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@
99
import org.mozilla.gecko.gfx.LayerView;
1010
import org.mozilla.gecko.util.HardwareUtils;
1111

12+
import org.mozilla.gecko.util.ThreadUtils;
13+
import org.mozilla.gecko.util.UiAsyncTask;
14+
1215
import android.content.Context;
16+
import android.content.SharedPreferences;
1317
import android.content.res.Resources;
1418
import android.graphics.Bitmap;
1519
import android.graphics.Rect;
@@ -51,8 +55,11 @@
5155
public class BrowserToolbar implements ViewSwitcher.ViewFactory,
5256
Tabs.OnTabsChangedListener,
5357
GeckoMenu.ActionItemBarPresenter,
54-
Animation.AnimationListener {
58+
Animation.AnimationListener,
59+
SharedPreferences.OnSharedPreferenceChangeListener {
5560
private static final String LOGTAG = "GeckoToolbar";
61+
public static final String PREFS_NAME = "BrowserToolbar";
62+
public static final String PREFS_SHOW_URL = "ShowUrl";
5663
private GeckoRelativeLayout mLayout;
5764
private LayoutParams mAwesomeBarParams;
5865
private View mAwesomeBarContent;
@@ -115,6 +122,8 @@ public class BrowserToolbar implements ViewSwitcher.ViewFactory,
115122

116123
private static final int FORWARD_ANIMATION_DURATION = 450;
117124

125+
private boolean mShowUrl;
126+
118127
public BrowserToolbar(BrowserApp activity) {
119128
// BrowserToolbar is attached to BrowserApp only.
120129
mActivity = activity;
@@ -125,6 +134,27 @@ public BrowserToolbar(BrowserApp activity) {
125134
mAnimateSiteSecurity = true;
126135

127136
mAnimatingEntry = false;
137+
mShowUrl = false;
138+
139+
(new UiAsyncTask<Void, Void, Void>(ThreadUtils.getBackgroundHandler()) {
140+
@Override
141+
public synchronized Void doInBackground(Void... params) {
142+
SharedPreferences settings = mActivity.getSharedPreferences(PREFS_NAME, 0);
143+
settings.registerOnSharedPreferenceChangeListener(BrowserToolbar.this);
144+
mShowUrl = settings.getBoolean(PREFS_SHOW_URL, false);
145+
return null;
146+
}
147+
148+
@Override
149+
public void onPostExecute(Void v) {
150+
if (mShowUrl) {
151+
Tab tab = Tabs.getInstance().getSelectedTab();
152+
if (tab != null) {
153+
setTitle(tab.getURL());
154+
}
155+
}
156+
}
157+
}).execute();
128158
}
129159

130160
public void from(RelativeLayout layout) {
@@ -431,7 +461,7 @@ public void onTabChanged(Tab tab, Tabs.TabEvents msg, Object data) {
431461
switch(msg) {
432462
case TITLE:
433463
if (Tabs.getInstance().isSelectedTab(tab)) {
434-
setTitle(tab.getDisplayTitle());
464+
setTitle(mShowUrl ? tab.getURL() : tab.getDisplayTitle());
435465
}
436466
break;
437467
case START:
@@ -451,7 +481,7 @@ public void onTabChanged(Tab tab, Tabs.TabEvents msg, Object data) {
451481
updateForwardButton(tab.canDoForward());
452482
setProgressVisibility(false);
453483
// Reset the title in case we haven't navigated to a new page yet.
454-
setTitle(tab.getDisplayTitle());
484+
setTitle(mShowUrl ? tab.getURL() : tab.getDisplayTitle());
455485
}
456486
break;
457487
case RESTORED:
@@ -1189,7 +1219,7 @@ public void refresh() {
11891219
Tab tab = Tabs.getInstance().getSelectedTab();
11901220
if (tab != null) {
11911221
String url = tab.getURL();
1192-
setTitle(tab.getDisplayTitle());
1222+
setTitle(mShowUrl ? tab.getURL() : tab.getDisplayTitle());
11931223
setFavicon(tab.getFavicon());
11941224
setProgressVisibility(tab.getState() == Tab.STATE_LOADING);
11951225
setSecurityMode(tab.getSecurityMode());
@@ -1237,4 +1267,14 @@ public boolean closeOptionsMenu() {
12371267

12381268
return true;
12391269
}
1270+
1271+
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
1272+
if (key.equals(PREFS_SHOW_URL)) {
1273+
mShowUrl = sharedPreferences.getBoolean(key, false);
1274+
Tab tab = Tabs.getInstance().getSelectedTab();
1275+
if (tab != null) {
1276+
setTitle(mShowUrl ? tab.getURL() : tab.getDisplayTitle());
1277+
}
1278+
}
1279+
}
12401280
}

mobile/android/base/GeckoPreferences.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public class GeckoPreferences
6464
private static String PREFS_TELEMETRY_ENABLED = "toolkit.telemetry.enabled";
6565
private static String PREFS_TELEMETRY_ENABLED_PRERELEASE = "toolkit.telemetry.enabledPreRelease";
6666
private static String PREFS_UPDATER_AUTODOWNLOAD = "app.update.autodownload";
67+
private static String PREFS_TITLEBAR_MODE = "android.not_a_preference.privacy.titlebar";
6768

6869
@Override
6970
protected void onCreate(Bundle savedInstanceState) {
@@ -173,6 +174,8 @@ private void setupPreferences(PreferenceGroup preferences, ArrayList<String> pre
173174
i--;
174175
continue;
175176
}
177+
} else if (PREFS_TITLEBAR_MODE.equals(key)) {
178+
setupTitlebarPref((ListPreference)pref);
176179
}
177180

178181
// Some Preference UI elements are not actually preferences,
@@ -536,4 +539,29 @@ private void unregisterEventListener(String event) {
536539
public boolean isGeckoActivityOpened() {
537540
return false;
538541
}
542+
543+
private void setupTitlebarPref(final ListPreference pref) {
544+
final SharedPreferences settings = getSharedPreferences(BrowserToolbar.PREFS_NAME, 0);
545+
boolean value = settings.getBoolean(BrowserToolbar.PREFS_SHOW_URL, false);
546+
547+
final String[] entries = new String[] {
548+
getResources().getString(R.string.pref_titlebar_mode_url),
549+
getResources().getString(R.string.pref_titlebar_mode_title)
550+
};
551+
pref.setEntries(entries);
552+
pref.setEntryValues(entries);
553+
pref.setValueIndex(value ? 0 : 1);
554+
pref.setSummary(value ? entries[0] : entries[1]);
555+
556+
pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
557+
@Override
558+
public boolean onPreferenceChange(Preference preference, Object newValue) {
559+
settings.edit()
560+
.putBoolean(BrowserToolbar.PREFS_SHOW_URL, newValue.toString().equals(entries[0]))
561+
.commit();
562+
pref.setSummary(newValue.toString());
563+
return true;
564+
}
565+
});
566+
}
539567
}

mobile/android/base/locales/en-US/android_strings.dtd

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,10 @@ size. -->
174174
<!ENTITY contextmenu_subscribe "Subscribe to Page">
175175
<!ENTITY contextmenu_site_settings "Edit Site Settings">
176176

177+
<!ENTITY pref_titlebar_mode "Title bar">
178+
<!ENTITY pref_titlebar_mode_title "Show page title">
179+
<!ENTITY pref_titlebar_mode_url "Show page address">
180+
177181
<!ENTITY history_removed "Page removed">
178182

179183
<!ENTITY bookmark_edit_title "Edit Bookmark">

mobile/android/base/resources/xml/preferences_privacy.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@
5454
android:defaultValue="true"
5555
android:persistent="true" />
5656

57+
<ListPreference android:key="android.not_a_preference.privacy.titlebar"
58+
android:title="@string/pref_titlebar_mode"
59+
android:persistent="true" />
60+
5761
</PreferenceCategory>
5862

5963
</PreferenceScreen>

mobile/android/base/strings.xml.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,10 @@
177177
<string name="contextmenu_subscribe">&contextmenu_subscribe;</string>
178178
<string name="contextmenu_site_settings">&contextmenu_site_settings;</string>
179179

180+
<string name="pref_titlebar_mode">&pref_titlebar_mode;</string>
181+
<string name="pref_titlebar_mode_title">&pref_titlebar_mode_title;</string>
182+
<string name="pref_titlebar_mode_url">&pref_titlebar_mode_url;</string>
183+
180184
<string name="history_removed">&history_removed;</string>
181185

182186
<string name="bookmark_edit_title">&bookmark_edit_title;</string>

0 commit comments

Comments
 (0)