Skip to content

Commit

Permalink
add a building switch: MayOverrideNewTab
Browse files Browse the repository at this point in the history
if true, then still check manifest.json to learn
    whether new tab has been overridden,
so that a user can disable overriding easily
    (by deleting the line `"newtab": "pages/newtab.html"` in manifest.json).

This is for #42 .
  • Loading branch information
gdh1995 committed Jun 2, 2019
1 parent 4b59e24 commit 04f5c0d
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 30 deletions.
22 changes: 11 additions & 11 deletions Gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ gulpPrint = gulpPrint.default || gulpPrint;
createBuildConfigCache();
var has_polyfill = !!(getBuildItem("BTypes") & BrowserType.Chrome)
&& getBuildItem("MinCVer") < 44 /* MinSafe$String$$StartsWith */;
var has_newtab = getNonNullBuildItem("OverrideNewTab") > 0;
var may_have_newtab = getNonNullBuildItem("MayOverrideNewTab") > 0;
var es6_viewer = false;
// es6_viewer = !(getBuildItem("BTypes") & BrowserType.Chrome) || getBuildItem("MinCVer") >= 52;
const POLYFILL_FILE = "lib/polyfill.ts", NEWTAB_FILE = "pages/newtab.ts";
Expand All @@ -57,7 +57,7 @@ var CompileTasks = {
lib: ["lib/*.ts"].concat(has_polyfill ? [] : ["!" + POLYFILL_FILE]),
front: [["front/*.ts", has_polyfill ? POLYFILL_FILE : "!" + POLYFILL_FILE
, "lib/injector.ts", "pages/*.ts"
, has_newtab ? NEWTAB_FILE : "!" + NEWTAB_FILE
, may_have_newtab ? NEWTAB_FILE : "!" + NEWTAB_FILE
, "!pages/options*.ts", "!pages/show.ts"]
, ["background/bg.d.ts", "content/*.d.ts"]
, { inBatch: false }],
Expand Down Expand Up @@ -94,7 +94,7 @@ var Tasks = {
, '!**/*.ts', "!**/*.js", "!**/tsconfig*.json"
, "!test*", "!todo*"
];
has_newtab || arr.push("!" + NEWTAB_FILE.replace(".ts", ".*"));
may_have_newtab || arr.push("!" + NEWTAB_FILE.replace(".ts", ".*"));
getBuildItem("BTypes") & BrowserType.Chrome || arr.push("!" + FILE_URLS_CSS);
es6_viewer && arr.push("!" + VIEWER_JS);
var has_wordsRe = getBuildItem("BTypes") & ~BrowserType.Firefox
Expand Down Expand Up @@ -132,7 +132,7 @@ var Tasks = {
curConfig.push(getNonNullBuildItem("Commit"));
}
curConfig.push(getNonNullBuildItem("NDEBUG"));
curConfig.push(getNonNullBuildItem("OverrideNewTab"));
curConfig.push(getNonNullBuildItem("MayOverrideNewTab"));
curConfig = JSON.stringify(curConfig);
configFile = osPath.join(JSDEST, "." + configFile + ".build");
var needClean = true;
Expand Down Expand Up @@ -236,7 +236,7 @@ var Tasks = {
var oriManifest = readJSON("manifest.json", true);
var res = ["**/*.js", "!background/*.js", "!content/*.js", "!front/vomnibar*", "!pages/options*"];
has_polyfill || res.push("!" + POLYFILL_FILE.replace(".ts", ".*"));
has_newtab || res.push("!" + NEWTAB_FILE.replace(".ts", ".*"));
may_have_newtab || res.push("!" + NEWTAB_FILE.replace(".ts", ".*"));
if (!has_dialog_ui) {
res.push("!*/dialog_ui.*");
}
Expand Down Expand Up @@ -292,7 +292,7 @@ var Tasks = {
if (dialog_ui != null && !!dialog_ui !== has_dialog_ui && !dialog_ui) {
manifest.options_ui && (manifest.options_ui.open_in_tab = true);
}
if (getNonNullBuildItem("OverrideNewTab") <= 0) {
if (getNonNullBuildItem("MayOverrideNewTab") <= 0) {
if (manifest.chrome_url_overrides) {
delete manifest.chrome_url_overrides.newtab;
}
Expand Down Expand Up @@ -408,10 +408,10 @@ gulp.task("locally", function(done) {
CompileTasks.lib.length = 1;
has_polyfill || CompileTasks.lib.push("!" + POLYFILL_FILE);
}
var old_has_newtab = has_newtab;
has_newtab = getNonNullBuildItem("OverrideNewTab") > 0;
if (has_newtab != old_has_newtab) {
CompileTasks.front[0][4] = has_newtab ? NEWTAB_FILE : "!" + NEWTAB_FILE;
var old_has_newtab = may_have_newtab;
may_have_newtab = getNonNullBuildItem("MayOverrideNewTab") > 0;
if (may_have_newtab != old_has_newtab) {
CompileTasks.front[0][4] = may_have_newtab ? NEWTAB_FILE : "!" + NEWTAB_FILE;
}
es6_viewer = false;
// es6_viewer = !(getBuildItem("BTypes") & BrowserType.Chrome) || getBuildItem("MinCVer") >= 52;
Expand Down Expand Up @@ -1049,7 +1049,7 @@ function getBuildItem(key, literalVal) {
if (!cached) {
if (key === "Commit") {
cached = [literalVal, [safeJSONParse(literalVal), getGitCommit()]];
} else if (key === "OverrideNewTab") {
} else if (key === "MayOverrideNewTab") {
if (!manifest.chrome_url_overrides || !manifest.chrome_url_overrides.newtab) {
cached = buildOptionCache[key] = ["0", 0];
}
Expand Down
13 changes: 7 additions & 6 deletions background/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,10 @@ var Backend: BackendHandlersNS.BackendHandlers;
if (!url) {
delete args.url;
} else if (!(type = Settings.newTabs_[url])) { /* empty */ }
else if (!Build.OverrideNewTab && type === Urls.NewTabType.browser) {
else if (!(Build.MayOverrideNewTab && Settings.CONST_.OverrideNewTab_)
&& Settings.CONST_ && type === Urls.NewTabType.browser) {
delete args.url;
} else if (Build.OverrideNewTab && type === Urls.NewTabType.vimium) {
} else if (Build.MayOverrideNewTab && Settings.CONST_.OverrideNewTab_ && type === Urls.NewTabType.vimium) {
args.url = Settings.cache_.newTabUrl_f;
}
Build.BTypes & BrowserType.Edge && (!(Build.BTypes & ~BrowserType.Edge) || OnOther === BrowserType.Edge) &&
Expand Down Expand Up @@ -2266,7 +2267,7 @@ Are you sure you want to continue?`);
return;
}
sender.f = Frames.Flags.userActed;
} else if (Build.BTypes & BrowserType.Firefox && Build.OverrideNewTab && type === PortType.CloseSelf) {
} else if (Build.BTypes & BrowserType.Firefox && (Build.MayOverrideNewTab && Settings.CONST_.OverrideNewTab_) && type === PortType.CloseSelf) {
if (tabId >= 0 && !sender.i) {
removeTempNewTab(tabId, port);
}
Expand Down Expand Up @@ -2301,7 +2302,7 @@ Are you sure you want to continue?`);
});
}
sender.s = status;
if (Build.BTypes & BrowserType.Firefox && Build.OverrideNewTab) {
if (Build.BTypes & BrowserType.Firefox && (Build.MayOverrideNewTab && Settings.CONST_.OverrideNewTab_)) {
(port as chrome.runtime.Port).sender.tab = null as never;
}
port.onDisconnect.addListener(OnDisconnect);
Expand Down Expand Up @@ -2353,7 +2354,7 @@ Are you sure you want to continue?`);
: cPort ? cPort.s.t : TabRecency_.last_;
}
framesForOmni.push(port);
if (Build.BTypes & BrowserType.Firefox && Build.OverrideNewTab) {
if (Build.BTypes & BrowserType.Firefox && (Build.MayOverrideNewTab && Settings.CONST_.OverrideNewTab_)) {
(port as chrome.runtime.Port).sender.tab = null as never;
}
port.onDisconnect.addListener(OnOmniDisconnect);
Expand Down Expand Up @@ -2397,7 +2398,7 @@ Are you sure you want to continue?`);
url: "",
incognito: false
};
if (!(Build.BTypes & BrowserType.Firefox && Build.OverrideNewTab)) {
if (!(Build.BTypes & BrowserType.Firefox && (Build.MayOverrideNewTab && Settings.CONST_.OverrideNewTab_))) {
sender.tab = null as never;
}
return (port as Writeable<Port>).s = {
Expand Down
20 changes: 12 additions & 8 deletions background/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -471,6 +471,7 @@ v.m|v\\:math: vimium://math\\ $S re= Calculate
Exclusions: "/background/exclusions.js",
InjectEnd_: "content/injected_end.js",
NewTabForNewUser_: "pages/options.html#!newTabUrl",
OverrideNewTab_: !!Build.MayOverrideNewTab,
OptionsPage_: "pages/options.html", Platform_: "browser",
baseCSS: "vimium.min.css",
exclusionTemplate: "exclusions.html",
Expand Down Expand Up @@ -558,23 +559,26 @@ if (Build.BTypes & BrowserType.Firefox && !Build.NativeWordMoveOnFirefox
(payload_ as Writeable<typeof payload_>).browser_ =
(settings.omniPayload_ as Writeable<VomnibarPayload>).browser_ = OnOther;
}
if (Build.MayOverrideNewTab) {
const overrides = ref.chrome_url_overrides, hasNewTab = overrides && overrides.newtab;
Settings.CONST_.OverrideNewTab_ = !!hasNewTab;
if (hasNewTab) {
ref3[func(hasNewTab)] = Urls.NewTabType.vimium;
}
}
(defaults as SettingsWithDefaults).newTabUrl = (Build.BTypes & ~BrowserType.Chrome
&& (!(Build.BTypes & BrowserType.Chrome) || OnOther !== BrowserType.Chrome))
? CommonNewTab : Build.OverrideNewTab ? obj.NtpNewTab_ : ChromeNewTab;
? CommonNewTab : (Build.MayOverrideNewTab && Settings.CONST_.OverrideNewTab_) ? obj.NtpNewTab_ : ChromeNewTab;
// note: on firefox, "about:newtab/" is invalid, but it's OKay if still marking the URL a NewTab URL.
/** Note: .vimium and .browser should never exist in the same time
* use {@link #Build.OverrideNewTab} to decide which one
* use {@link #Build.MayOverrideNewTab} and {@link #Settings.CONST_.OverrideNewTab_)} to decide which one
* required by {@link main.ts#tabsCreate}
*/
ref3[CommonNewTab] = ref3[CommonNewTab + "/"] = Build.OverrideNewTab
ref3[CommonNewTab] = ref3[CommonNewTab + "/"] = (Build.MayOverrideNewTab && Settings.CONST_.OverrideNewTab_)
? Urls.NewTabType.vimium : Urls.NewTabType.browser;
(Build.BTypes & ~BrowserType.Chrome && (!(Build.BTypes & BrowserType.Chrome) || OnOther !== BrowserType.Chrome)) ||
(ref3[ChromeNewTab] = ref3[ChromeNewTab + "/"] = Build.OverrideNewTab
(ref3[ChromeNewTab] = ref3[ChromeNewTab + "/"] = (Build.MayOverrideNewTab && Settings.CONST_.OverrideNewTab_)
? Urls.NewTabType.vimium : Urls.NewTabType.browser);
if (Build.OverrideNewTab) {
type Overridden = EnsureNonNull<typeof ref.chrome_url_overrides>;
ref3[func((ref.chrome_url_overrides as Overridden).newtab)] = Urls.NewTabType.vimium;
}
obj.GlobalCommands_ = (<Array<kShortcutNames | kShortcutAliases & string>> Object.keys(ref.commands || {})
).map(i => i === kShortcutAliases.nextTab1 ? kShortcutNames.nextTab : i);
obj.VerCode_ = ref.version;
Expand Down
7 changes: 5 additions & 2 deletions pages/loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,22 @@ window.chrome && chrome.runtime && chrome.runtime.getManifest && (function () {
head.appendChild(scriptElement);
scripts.push(scriptElement);
}
interface BgWindow extends Window { Settings: typeof Settings; }
scripts[scripts.length - 1].onload = function (): void {
for (let i = scripts.length; 0 <= --i; ) { scripts[i].remove(); }
const dom = (window as {} as {VDom?: typeof VDom}).VDom;
dom && (dom.allowScripts_ = 0);
if (Build.BTypes & BrowserType.Firefox && Build.OverrideNewTab
let bg: BgWindow;
if (Build.BTypes & BrowserType.Firefox && Build.MayOverrideNewTab
&& (bg = chrome.extension.getBackgroundPage() as BgWindow)
&& bg.Settings.CONST_.OverrideNewTab_
&& location.pathname.indexOf("newtab") >= 0) {
setTimeout(function (): void {
const hud = (window as {} as {VHud?: VHUDTy}).VHud;
hud && hud.tip_("Not allowed to open the target new tab URL", 2560);
}, 100);
}
};
interface BgWindow extends Window { Settings: typeof Settings; }
if (location.pathname.toLowerCase().indexOf("options") < 0) {
const bg = chrome.extension.getBackgroundPage() as BgWindow;
if (bg && bg.Backend) {
Expand Down
2 changes: 1 addition & 1 deletion pages/options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@ interface AdvancedOptBtn extends HTMLButtonElement {
bgSettings_.broadcast_(req);
}

if (!Build.OverrideNewTab) {
if (!(Build.MayOverrideNewTab && bgSettings_.CONST_.OverrideNewTab_)) {
$<EnsuredMountedElement & HTMLElement>("#focusNewTabContent").parentElement.parentElement.parentElement.remove();
$<EnsuredMountedElement & HTMLElement>("#newTabUrlRefer").remove();
}
Expand Down
2 changes: 1 addition & 1 deletion pages/options_checker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ let keyMappingChecker_ = {
Option_.all_.keyMappings.checker_ = keyMappingChecker_;
keyMappingChecker_ = null as never;

if (Build.OverrideNewTab) {
if (Build.MayOverrideNewTab && bgSettings_.CONST_.OverrideNewTab_) {
Option_.all_.newTabUrl.checker_ = {
check_ (value: string): string {
let url = (<RegExpI> /^\/?pages\/[a-z]+.html\b/i).test(value)
Expand Down
2 changes: 1 addition & 1 deletion types/build/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ declare const enum Build {
NoDialogUI = 0,
NativeWordMoveOnFirefox = 1,
PContentSettings = 1,
OverrideNewTab = 1,
MayOverrideNewTab = 1,
DetectAPIOnFirefox = 1,
}
declare const enum BuildStr {
Expand Down

0 comments on commit 04f5c0d

Please sign in to comment.