Chromiumにシークレット"タブ"を追加する
今回の目標
Chromeを使っていて、閲覧履歴を残したくない、というときありますよね。
そんなときに活躍するのが「シークレットウィンドウ」なのですが、
普通のブラウザとシークレットモードのブラウザを分けて開かなくてはなりません。
...不便じゃないですか?不便ですよね。はい。
ということで今回はChromiumにシークレット"タブ"を追加してみようと思います。
まずはシークレットウィンドウに関連する部分を探す
いきなり変更を加えると言ってもChromiumのソースコードは膨大な量なのでどこから手を付けていいか見当も付きません。
まずは関係ありそうなところをChromium Code Searchで探ってみましょう。
シークレットモードは内部では"Incognito"と言うようなのでnewincognitowindowで検索してみると、
あった。(実は探すのめっちゃ苦労したけどそれは内緒)
見てみるとその下にはちょうどNewTabなんて関数も。
この2つを組み合わせればシークレットタブを作れちゃうのでは?
NewWindowとNewIncognitoWindowを見比べてみると、プリプロセッサ指令の違いはあるものの大きな違いは
GetOriginalProfile()かGetOffTheRecordProfile()かの違い。
これを踏まえてNewIncognitoTabを作ってみる。
コードを書き換えていく
タブを開くときにbrowserのprofileごと書き換えちゃおうという強引な発想。
ただbrowserのprofileは書き換えられないようconst定義がされていたのでそれを外しついでにセッターを定義。
またこのままだと続けて開くタブが全てシークレットモードになってしまうためNewTabにGetOriginalProfile()の処理を追加。
そしてチェックを一つ外す。
さて、なかなか強引だができたんじゃなかろうか...?
ということで試しにシークレットウィンドウを開くボタンをシークレットタブに割り当てて実行してみる。
とりあえずテスト
...こんな適当な変更で動いてしまった。
履歴もしっかり残らないしログイン情報も残らない。
今回はテスト的にシークレットウィンドウボタンに割り当てましたが
次回は"シークレットタブを開く"コマンドを追加して、見た目をそれっぽくしていきます。