Bug 582244 - Part 1: Bare bones PB implementation. r=mfinkle

This commit is contained in:
Brian Nicholson 2012-10-09 11:26:33 -07:00
parent 79751f5392
commit 17c96a1e9d
9 changed files with 30 additions and 2 deletions

View File

@ -895,6 +895,9 @@ abstract public class BrowserApp extends GeckoApp
}
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("DesktopMode:Change", args.toString()));
return true;
case R.id.private_browsing:
Tabs.getInstance().loadUrl("about:home", Tabs.LOADURL_NEW_TAB | Tabs.LOADURL_PRIVATE);
return true;
default:
return super.onOptionsItemSelected(item);
}

View File

@ -37,6 +37,7 @@ public class Tabs implements GeckoEventListener {
public static final int LOADURL_NONE = 0;
public static final int LOADURL_NEW_TAB = 1;
public static final int LOADURL_USER_ENTERED = 2;
public static final int LOADURL_PRIVATE = 4;
private static final int SCORE_INCREMENT_TAB_LOCATION_CHANGE = 5;
private static final int SCORE_INCREMENT_TAB_SELECTED = 10;
@ -455,11 +456,14 @@ public class Tabs implements GeckoEventListener {
int tabId = -1;
try {
boolean isPrivate = (flags & LOADURL_PRIVATE) != 0;
args.put("url", url);
args.put("engine", searchEngine);
args.put("parentId", parentId);
args.put("userEntered", (flags & LOADURL_USER_ENTERED) != 0);
args.put("newTab", (flags & LOADURL_NEW_TAB) != 0);
args.put("isPrivate", isPrivate);
if ((flags & LOADURL_NEW_TAB) != 0) {
tabId = getNextTabId();

View File

@ -126,6 +126,7 @@ size. -->
<!ENTITY find_in_page "Find in Page">
<!ENTITY desktop_mode "Request Desktop Site">
<!ENTITY tools "Tools">
<!ENTITY new_pb_tab "New Private Browsing Tab">
<!-- Localization note (find_text, find_prev, find_next, find_close) : These strings are used
as alternate text for accessibility. They are not visible in the UI. -->

View File

@ -32,6 +32,9 @@
android:title="@string/desktop_mode"
android:checkable="true" />
<item android:id="@+id/private_browsing"
android:title="@string/new_pb_tab"/>
<item android:title="@string/tools"
android:icon="@drawable/ic_menu_tools">

View File

@ -33,6 +33,9 @@
android:title="@string/desktop_mode"
android:checkable="true" />
<item android:id="@+id/private_browsing"
android:title="@string/new_pb_tab"/>
<item android:title="@string/tools"
android:icon="@drawable/ic_menu_tools">

View File

@ -33,6 +33,9 @@
android:title="@string/desktop_mode"
android:checkable="true" />
<item android:id="@+id/private_browsing"
android:title="@string/new_pb_tab"/>
<item android:title="@string/tools"
android:icon="@drawable/ic_menu_tools">

View File

@ -32,6 +32,9 @@
android:title="@string/desktop_mode"
android:checkable="true" />
<item android:id="@+id/private_browsing"
android:title="@string/new_pb_tab"/>
<item android:id="@+id/addons"
android:title="@string/addons"/>

View File

@ -125,6 +125,7 @@
<string name="downloads">&downloads;</string>
<string name="apps">&apps;</string>
<string name="char_encoding">&char_encoding;</string>
<string name="new_pb_tab">&new_pb_tab;</string>
<!-- This string only appears in developer builds, which
is why it is not localizable. -->
<string name="toggle_profiling">Toggle Profiling</string>

View File

@ -1089,7 +1089,8 @@ var BrowserApp = {
selected: true,
parentId: ("parentId" in data) ? data.parentId : -1,
flags: flags,
tabID: data.tabID
tabID: data.tabID,
isPrivate: data.isPrivate
};
let url = data.url;
@ -2282,6 +2283,11 @@ Tab.prototype = {
// Must be called after appendChild so the docshell has been created.
this.setActive(false);
let isPrivate = ("isPrivate" in aParams) && aParams.isPrivate;
if (isPrivate) {
this.browser.docShell.QueryInterface(Ci.nsILoadContext).usePrivateBrowsing = true;
}
this.browser.stop();
let frameLoader = this.browser.QueryInterface(Ci.nsIFrameLoaderOwner).frameLoader;
@ -2316,7 +2322,8 @@ Tab.prototype = {
selected: ("selected" in aParams) ? aParams.selected : true,
title: aParams.title || aURL,
delayLoad: aParams.delayLoad || false,
desktopMode: this.desktopMode
desktopMode: this.desktopMode,
isPrivate: isPrivate
}
};
sendMessageToJava(message);