抜本的な形で設計を整理した

1.ICookieGetterの機能をシンプルにした。互換性関係でICookieImporterに改名
標準ライブラリ側で片付ければいいものは消した。SnkLib.App.CookieGetterとしてコア部分を分離し、コア部分からは直接関係のないWindows.Forms等を参照から外した。

2.IBrowserManager周りのコードの重複を省いた。互換性関係でICookieImporterFactoryに改名
マルチプロファイル系が腐ってたので重複コードを消した。ついでにBlinkCookieGetterのCookie復号化のコード分岐を目立たなくしてシーケンスが分かりやすいようにした。あとfirefoxのプロファイル読み込みも。

3.CookieStatusをイミュータブル化、BrowserConfigに改名
CookieStatusはICookieGetter向けの引数としての役割と外からの状態チェックの役割の2つを兼ねていて見通しが悪い。そのため、引数としての役割に特化させ、外向けの情報はICookieGetterに持たせた。イミュータブル化してるため、設定の変更はCookieStatus.Generate(), ICookieGetter.Generate()を組み合わせて必要なICookieGetterを再生成させる。

4.BrowserConfigに等価演算子を定義した。
ついでにCookieGetter.CreateInstance(config)の仕組みを調整した。設定復元がやりやすくなる。

5.いくつかのクラスの名前を役割が端的に表現されるように改名した。
ICookieGetterの実装クラスはレンダリングエンジン名をクラス名にするよう徹底した。

6.単体テストでいくつかのブラウザを一括チェックできるようにした

7.独自エンジン時代のOpera用のCookieGetterを削除
オワコン。中身がゴリ押し気味で危ないので削除。

8.名前空間を我流に変更
本家CookieGetterSharpとの互換性の無さをはっきりさせるために名前空間を変更。互換性対策としてHal.CookieGetterSharpにはラッパークラスを作成した。

9.余分なファイルが有ったので削除
IE9向けの残骸っぽいのを削除