この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2014年8月)

2014年8月28日

Bug-org 1055342 [TSF] Rename CurrentContent of nsTextStore to LockedContent
初回投稿日時: 2014年08月28日12時00分59秒
カテゴリ: Mozilla Core Mozilla34 TSF バグ修正
SNS: (list)

TSFの実装であるnsTextStoreのプチリファクタリングです。

これまでは、コンテンツを取得する必要があるのは、常に、ドキュメントがロックされている間だけでした。しかし、マウスイベントの通知に対応するためには、ドキュメントがロックされていない間に発生するITfMouseSinkのインストール時にもコンテンツを取得することが必要になります。

しかし、常にコンテンツを取得し、キャッシュし続けるのは、メモリ消費量の観点からすると非常にコストパフォーマンスが悪すぎます。たとえば、wiki等の巨大なコンテンツを編集していると、エディタ内のテキストが1MB以上ある可能性も普通にあります。

このため、従来から存在するnsTextStore::mContentは引き続き、ドキュメントロック中のコンテンツのみキャッシュすることにし、変わらず、ドキュメントのアンロック時に内容を破棄するようにすることにしました。このため、nsTextStore::mLockedContentにリネームし、ロック中のコンテンツのキャッシュであることが自明なように修正しました。これにあわせて、mLcokedContentを初期化するメソッドも、nsTextStore::CurrentContent()から、nsTextStore::LockedContent()に改名しています。

さらに、コンテンツの取得を二重化しないように、nsTextStore::GetCurrentText()というメソッドを新設し、nsTextStore::LockedContent()もこれを呼び出すようにしています。

関連するかもしれないエントリ

bug-org 1055342を含むエントリ