2014 年やったこと - Chromium 編
Chromium 関係,コードはあまり書いていない一年でした.数字としてはコミット 17 回,コードレビュー 13 回となります.一方 Issue Tracker 上での活動はまあそれなりにで,Issue 登録 19 回,コメントを書き込んだり状態を変更したりといった Issue の数は 173 件となりました.
自分でやったこと
Windows 版 Chromium の Aura 移行完了後不要になった IME 関連コードの削除
2014 年 1 月から 2 月にかけて,Aura + Ash 移行に伴い不要になった IME 関連コードの削除をやっていました.既にチームを移っていたこともあり,最後の後片付けという感じです.書くだけ書いて後片付けを次の人に任せるのは気が引けたというのもありますし,Chromium に関わり始めた 2012 年ごろ,おっかなびっくり書いたやっつけコードを自らの手で消し去る良い機会だったというのもあります.
Windows 版 Chromium で HiDPI 有効化時に IME の候補ウィンドウの位置がずれる問題の修正
2013 年に自分が登録したバグですが,普段使っている Windows ノート PC がこの影響を受けていてあまりにも不便だったので,土日の空き時間を使って自分で直してみたものです.
Android 5.0 の新 IME API への対応 (未完)
後で改めて書くかと思いますが,2014 年のメインプロジェクトの仕事のひとつで Android 5.0 にいくつか IME API を追加,というのをやっておりました.追加した API は InputMethodManager.html#updateCursor API の置き換えを狙ったもので,変換中の文字列のスクリーン座標を IME に伝えられるようにするものです.さて,この種の新 API の宿命として,IME だけでなくテキスト入力 widget 側にも新 API 対応が必要になります.Android の標準 TextView を使っているアプリケーションであれば何もしなくてよいのですが,独自にテキスト描画を行っているアプリケーションではそうはいきません.Chromium も当然ながらこのカテゴリに属し,Android 5.0 の SDK を使用して割と面倒なコードを追加する必要がありました.この仕事,当初は Chromium Android 版チームの人に頼もうかと漠然と考えていたのですが,Android 5.0 の開発期間中にとりあえず動く検証用コードを書き上げてしまったこともあり,なし崩し的に自分で対応コードを追加することになったという感じです.
とはいえコードレビューでのリクエストに色々応えていたらだいぶ規模が大きくなり,そのまま年末休暇シーズンに突入してしまったため,実現は 2015 年に持ち越しとなりました.
Issue Tracker 上で情報提供しつつ直してもらったものからいくつか
base::SHA1HashBytes に 4 GB 以上のデータを渡すと誤ったハッシュ値を返す
別件で SHA1 Hash の計算式を調べていたときに,参考に見てみた Chromium の内部関数に問題を見つけてしまったというものです.ざっと見てみた範囲では問題になるケースは見つけられませんでしたが,念のためセキュリティバグとして報告,修正してもらいました.
Chrome Remote Desktop (Chromoting) のウィンドウ上ではクライアント環境の IME は常にオフにすべき
仕事で Chrome Remote Desktop (内部コードネーム Chromoting) を使うことが良くあるのですが,IME 関係で不満があったので変更を提案して対応してもらったというものです.
Windows 環境から Linux 環境に Chrome Remote Desktop で接続するケースを考えてみます.このとき,Chrome Remote Desktop のウィンドウ上でクライアント側 (Windows 側) の IME を有効にすることができてしまっていました.しかし,確定した文字列は単に捨てられてしまうという状況でした.
これは,特に機能として役立っていないだけではなく,パスワードを意図せず IME に学習させてしまうなど望ましくない動作でした.そこで,クライアント側の IME を完全にオフにするという提案をしてみた次第です.
以前 Pepper SDK の IME 周りを担当されていた kinaba@ さんの的確なアドバイスのおかげで,数日のうちに対応していただくことができました.
Time::EnableHighResolutionTimer(false) が無視されることがある
http://t.co/JTur7YYQ3y
これ,Chromiumのソースを読むと若干印象が違うんですよね.
timeBeginPeriodは気を付けろ的な長いコメントは実際書いてあるし,バッテリー駆動時にはtimeBeginPeriod(1)呼ぶのを避けようとしてたり.
— NyaRuRu (@NyaRuRu) July 15, 2014
かなり初期からそうなっていたはず.2009年1月のGoogle Chrome Out of Beta Partyにお呼ばれしたときにこのネタでLTした記憶が……
http://t.co/8jPmv2kGHo
— NyaRuRu (@NyaRuRu) July 15, 2014
んで,まずいのは実はこの辺の挙動が継続的にテストされていないということかなぁと.実際,2009年1月当時LTしたときも,実は電源抜き差しイベントのモニタリングの実装が壊れていてなんかずっと電源つながっている状態と誤認されていました的な状態だったと.
— NyaRuRu (@NyaRuRu) July 15, 2014
2013年にも,WM_POWERBROADCASTイベントのモニタリングが8ヶ月ぐらい壊れたままだったのに誰も気づかなかった事件とか.
https://t.co/2je9isJfdJ
— NyaRuRu (@NyaRuRu) July 15, 2014
教訓としては,継続的テストの実行環境の中に,バッテリーモード動作をテストするための環境をちゃんと作るのが重要,というあたりでしょうか.でないと,バッテリーモードで動作するとき特有の挙動がテストできないですよ,と.
— NyaRuRu (@NyaRuRu) July 15, 2014
2014 年 7 月頃,ネットメディアを中心に Windows 版 Chrome の電力消費量が話題になったことがありました.報道に関して色々言いたいことはあったものの,実際うまく動作しないケースが存在することも知っていたので,念のため知っていることを Issue Tracker にコメントしておきました.実際には他にも色々問題があったらしく,しばらくしてまとめて修正していただきました.マルチスレッド絡みバグがたくさん見つかったそうです.
base::PowerMonitor::AddObserver と base::PowerMonitor::RemoveObserver が同じスレッドで呼ばれないことによる use-after-free
たまたま自分の目の前で Google Chrome Canary がクラッシュしたので,クラッシュダンプを頼りに Issue Tracker 上で原因究明に協力したものです.Issue としては以下のものになります.(Chromium ではクラッシュバグは原則セキュリティバグ扱いのため,特定アカウントでログインしていない限り以下のページは表示されません.面倒な仕組みですみません)
仮想関数呼び出しで EXCEPTION_ACCESS_VIOLATION_EXEC という一見不可思議なクラッシュだったのですが,イベントリスナーとして使われている仮想関数だったことから use-after-free を疑って関連コードを読んでいくと,以下のようなコードを発見.これ,AddObserver と RemoveObserver が同じスレッドで呼ばれないと,RemoveObserver はサイレントに何もしないという実装だったという.
http://src.chromium.org/viewvc/chrome/trunk/src/base/observer_list_threadsafe.h?revision=212281#l125
// Remove an observer from the list if it is in the list. // If there are pending notifications in-transit to the observer, they will // be aborted. // If the observer to be removed is in the list, RemoveObserver MUST // be called from the same thread which called AddObserver. void RemoveObserver(ObserverType* obs) {
「このせいじゃね?」とコメントしておいたところ,直前にコミットされていた Issue 482333003: Reland r290125: Close all active PeerConnections upon OS suspend - Code Review がまさにこの問題を踏んでいたことを特定していただきました.これにコードレビューで気付けというのはちょっと無理ですかね.ライブラリの設計ミスとでも言うべきか.
Google Cloud Messaging クライアントの exponential backoff が約 7 日でオーバーフローする
利用者からバグ報告に担当者が割り当てられていなかったので,関係しそうな人々を CC しただけ仕事です.Chrome が特定条件で (Google のサーバーの?) port 5228 に大量のパケットを送信する,という問題.原因だけは気になっていたのでその後もやりとりをウォッチしていたのですが,exponential backoff の計算方法に問題があって,約 7 日送信失敗し続けると double の精度を超えてしまっていたというオチでした.
Windows 10 Technical Preview 上で動く Chromium の User Agent が "Windows NT 6.3" と返す
Windows 8.1 のときにもあった,GetVersionEx 嘘つき問題です.マニフェストファイルに GUID を追加すれば解決する話ではあるのですが,実際手を出してみたら大量の yak shaving に付き合わされたのが前回.今回は Issue として登録して直してもらいました.
感想
何となくそうではないかと予想していましたが,Issue Tracker で人に作業を振ったりあれこれ意見を述べるだけってのはだいぶ楽ですねこれ.チームを移ったこともあり,基本的に休日や通勤中の空き時間でできる作業に専念していたのですが,これぐらいの作業なら空き時間との相談で続けてもいいかなというところです.
一方で Chromium のコードを書く人の負担が半端なく大きいという問題は未解決のままと言えます.かなり厳しいコードレビュー,法外に高いクロスプラットフォーム対応コスト,不安定なテスト,コミット後忘れた頃にやってくる regression とクラッシュの報告.実際に問題を修正してくれている人たちは何故そんな面倒な仕事をしてくれているのか,そこをうまくシステム化していかないとブラウザ開発というプロジェクト自体の持続可能性が危ういんではないかなと.Issue Tracker であれこれ意見を言うだけの人が 100 人いても,大変めんどくさいコード変更作業に立ち上がってくれる人が 1 人現れない限り問題は解決しないという構造をプロジェクト運営にどう反映させていくのか.思うことは色々あるのですが,この辺についてはまた改めて別のエントリで書いてみたいと思います.
2015 年ですが,Android 5.0 の新 IME API 対応はさっさと終わせないとですね.その先はあんまり考えていないです.まあなるようになる感じで.
References
コミット一覧
- Do not provisionally send ImeCompositionRangeChanged message on Android
- Revert "Plumb composition character bounds from C++ to Java"
- Replace #updateCursor with #updateCursorAnchorInfo
- Plumb composition character bounds from C++ to Java
- Plumb composition character bounds for Android 5.0
- Treats the returned value from ui::TextInputClient as DIP
- Remove obsolete files and comment from skia/
- Unify InputMethodIMM32 into InputMethodWin again
- Remove ui::TextInputClient::GetAttachedWindow
- Remove WM_DEADCHAR/WM_SYSDEADCHAR handler
- Revert r151669 and r155589 as non-Aura Metro mode is gone
- Logically revert r206996, which is no longer used in the era of Aura
- Remove non-Aura stuff from InputMethodWin
- Revert "Revert 249234 "Use MessagePumpDispatcher instead of MessageFilter""
- Use MessagePumpDispatcher instead of MessageFilter
- Revert r156303 as non-Aura Metro mode is gone
レビューした CL 一覧
- Show autofill popup after keyboard (if any) is shown.
- Do not use vector<scoped_ptr<>>.
- Fix DOM code for VKEY_LCONTROL and VKEY_RCONTROL
- Web MIDI: distributes MIDIPort information asynchronously
- Get IME's to work in Chrome OS mode on Windows 7.
- The message length should be serialized as a 64-bit value.
- Web MIDI: make input_ports_ and output_ports_ members private
- Web MIDI: introduce pending client count limit to start sessions
- Web MIDI: add an unit test to check MidiManager instantiation
- Add PGO targets to Chrome.
- Removed the unnecessary TODO
- Revert 249234 "Use MessagePumpDispatcher instead of MessageFilter"
- Remove InputMethodTSF, TSFEventRouter, TSFTextStore, TSFBridge
報告した Issue 一覧
- Issue 304691: Support IMEs and keyboard input for --open-ash on Linux
- Issue 326777: Win/Ash: Ctrl+{Left, Right}Shift does not flip the text direction
- Issue 334380: IME is not available under Ash mode on Windows
- Issue 343826: Remove ui::TextInputClient::GetAttachedWindow
- Issue 344209: Unify ui::InputMethodIMM32 into ui::InputMethodWin
- Issue 347363: Revise obsolete comments that were written in the era of IBus
- Issue 348333: Security: base::SHA1HashBytes produces wrong SHA1 hash when |len| >= 4GB
- Issue 350649: depot_tools.zip is obsolete and requires multiple self update
- Issue 350656: Design Documents? of Text Input is obsolete
- Issue 350659: Specify /Zc:strictStrings for release build
- Issue 350660: Remove unused IDS_OPTIONS_SETTINGS_LANGUAGES_* messages
- Issue 360334: Needs a spec of whether ui::TextInputClient uses DIP (Density Independent Pixel) or not
- Issue 401371: IME should never be enabled in Chromoting window
- Issue 402239: (restricted)
- Issue 402244: (restricted)
- Issue 404132: (restricted)
- Issue 420629: User agent string reports "Windows NT 6.3" on Windows 10 Technical Preview
- Issue 424866: Support InputMethodManager#updateCursorAnchorInfo for Android 5.0
- Issue 427090: Monitor the performance impact on real devices when CursorAnchorInfo is enabled
コメントした Issue 一覧
- Issue 1970: ctrl+shift+t conflicts with Google Pinyin IME
- Issue 65712: Autofill eats keystrokes when SCIM is enabled
- Issue 86460: GoogleJapaneseInputMethod shows the candidate window inappropriate position
- Issue 113805: Chromium wrongly add text to clipboard while using input method with preedit under linux
- Issue 125161: Please do not use GtkIMContextSimple for password fields.
- Issue 125888: SSH extension doesn't permit use of IBUS input method (and maybe also other input methods, not tested)
- Issue 128475: Search setting incorrectly unfocus the input field cause text commit
- Issue 135135: Does not remove committed string with an IME on cancelling
- Issue 139764: Can't render double underline on composition
- Issue 142823: Some preedit text might be typed in to input box
- Issue 168993: Win/Ash: Cannot commit text via IME on Google Document
- Issue 170186: pdb size being exceeded in non-component=shared_library builds
- Issue 174136: Refactor pdb workaround
- Issue 215520: ibus-mozc: no way to delete input history
- Issue 218382: hterm: incorrect handling of utf-8 input
- Issue 260529: IME UI is not placed at proper position when HiDPI is enabled
- Issue 264288: Blue lowercase letter a displated in top left corner of menu icon on canary
- Issue 265848: pasting a data-uri into Metro address bar makes it completely invisible
- Issue 266660: (restricted)
- Issue 268220: (restricted)
- Issue 271962: Investigate correct focus event propagation path for NativeTextfieldViews and InputMethodTSF
- Issue 272668: Weird painting in the find bar (Win8 Metro)
- Issue 273106: Blue lowercase 'a' badge on Chrome Canary menu icon, but no "Open Ash Desktop" menu item
- Issue 276987: Japanese Input does not respect keyboard layout
- Issue 279097: Web MIDI: implement MIDIConnectionEvent
- Issue 293394: Unable to reopen last closed tab because Google Pinyin always eats 'Ctrl+Shift+T'
- Issue 310698: (restricted)
- Issue 311448: Images can not easily be deleted in contentEditable elements in Chrome for mobile
- Issue 311488: Migrating to Win SDK 8.1
- Issue 313911: Google search page tab title not read by JAWS
- Issue 315010: Regression: Omnibox suggestions flashing just before the 'Google Pinyin IME' candidate window shows up (Win7)
- Issue 317945: Remove support for system V SHM in the sandbox
- Issue 318484: aura: omnibox popup history ignores system font foreground colour
- Issue 319122: Remove TSFEventRouter(Observer), InputMethodTSF, and related unused code.
- Issue 321294: Crash with Matrox Power Desk software (TripleHead2Go and DualHead2Go devices)
- Issue 323376: Cannot activate an IME in Omnibox (Aura)
- Issue 326837: (restricted)
- Issue 330735: Remove non-Aura Windows code
- Issue 331419: (restricted)
- Issue 332729: Regression - Other elements are clickable in presence of "Confirm New App" dialogue box.
- Issue 333011: Windows 8.1 Color Emoji on Segoe UI Emoji is not supported on Chrome
- Issue 334600: (restricted)
- Issue 335386: (restricted)
- Issue 335471: Don't show the input mode indicator when it's located in a weird position.
- Issue 335912: Chrome: Crash Report - Magic Signature: views::DesktopWindowTreeHostWin::HandleIMEM...
- Issue 335972: IME input mode should change dynamically as an IME becomes active/inactive
- Issue 336740: IME can't be enabled in FlashPlayer when Chrome settings for plug-ins is set to "Click to play".
- Issue 337927: Google English keyboard inserts extra string
- Issue 338357: (restricted)
- Issue 338644: In some Win8 + Chrome32, unicode glyphs with 4-byte codes are not shown
- Issue 340199: X keyboard layout / input handling is wrong
- Issue 340569: Can't delete U+FF8A U+FF9E in the text area
- Issue 340972: Chrome crashes with an error message asking me if I want to restart Chrome
- Issue 343622: Can't activate Chinese/Japanese input method in Hangouts chatting window
- Issue 343875: Check failed: text_input_type_ != ui::TEXT_INPUT_TYPE_NONE in render_widget_host_view_aura.cc (2344)
- Issue 344091: Chrome_Win: Crash Report: 'views::corewm::InputMethodEventFilter::DispatchKeyEventPostIME'
- Issue 344410: Web MIDI: midi_manager_alsa requires exclusive access to device
- Issue 344773: Omnibox suggestions overlaps candidate window on selecting Google Pinyin IME
- Issue 345080: IMEs are disabled on Hangout chat window after link navigation
- Issue 347360: 'ols.bat"' is not recognized as an internal or external command
- Issue 348194: Linux Aura : Tool tip background color is shown incorrectly
- Issue 348437: Linux Aura: Task manager should have native window dressing
- Issue 348907: The 'Chrome hangs when we select 'Google Pinyin' and click on 'Load Unpacked extension' on 'chrome://extensions' page
- Issue 348983: Chrome: Crash Report - views::DesktopWindowTreeHostWin::HandleIMEMessage
- Issue 349163: Key modifier doesn't work when cursor is in text box with some IMEs
- Issue 349576: git runs out of memory cloning https://chromium.googlesource.com/chromium/reference_builds/chrome_win.git
- Issue 349788: Chrome crashes on startup when using Matrox software with dual monitors
- Issue 349896: (restricted)
- Issue 350018: Use some new flags to improve the VS build
- Issue 350260: (restricted)
- Issue 350639: Large PDB hack no longer required post VS2013 Update 2
- Issue 350694: "fetch --nohooks chromium" fails with an error because reference_build\\_gclient_chrome_win_xxxxxx is not found
- Issue 351991: Notifications from extension disables ibus-based input methods until refocus
- Issue 352598: The 'Choose Folder' window opens behind the Feedback' app when Google Pinyin is selected.
- Issue 353914: Can't delete unicode6 emoji of surrogate pair in Google Search of Chrome.
- Issue 354495: The last Korean character before space is inserted after a space in all input field
- Issue 355122: (restricted)
- Issue 355995: Can't delete certain Thai characters in text box on Chrome 33 Android
- Issue 356467: Sometimes, IME switching doesn't work properly
- Issue 359843: Directwrite causes tab crashes on some pages
- Issue 359892: (restricted)
- Issue 360317: Joining multiple same type devices to Windows PC, inputs method return only one entry.
- Issue 360351: Some websites (twitter/github) crash when DirectWrite is enabled
- Issue 360388: Ignores all keyboard input
- Issue 362155: Ugly fonts in address bar, tab title and sandwich menu
- Issue 362698: ozone: implement input method support on ChromeOS
- Issue 363358: Hangouts does not work on Google Chrome beta
- Issue 363604: Cannot type into Chromium
- Issue 363921: keyboard input is broken in a forked version of Chromium 34 shipped with Ubuntu 14.04
- Issue 364571: Chrome breaking devanagari input using IBUS input method.
- Issue 364707: selecting url from address bar no longer includes the scheme
- Issue 365015: Aura shows garbage font when Droid Sans enabled
- Issue 365063: Cannot type any text in any text field
- Issue 365152: Korean Character Input Problem
- Issue 365208: Japanese fonts shipping with Windows look bad in DirectWrite mode
- Issue 366952: HTML5 color picker isn't using a native window
- Issue 367919: (restricted)
- Issue 368100: Keydown fires extra event (key 229)
- Issue 368218: Task manager does not match with the browser window border color
- Issue 368679: Smilies in Google search textfield are not deleting when "Delete key" is pressed
- Issue 369190: Copying from the URL bar no longer includes http:// prefix
- Issue 369229: Titlebar mouse events are no longer passed to underlying window manager
- Issue 369788: Closing extension popup breaks chrome
- Issue 369846: Accept suggestion not working in console
- Issue 370778: Extension IME doesn't works fine
- Issue 371478: ozone/freon: make X11 optional for chromeos builds
- Issue 371652: IMEs cannot activate
- Issue 372650: IME stops working when switching focus between native input fields and <INPUT type='text'> field
- Issue 373174: CJK IME disabled after inserting a hyperlink on Google Blogger
- Issue 373181: Chromium packet storm on port 5228
- Issue 373712: (restricted)
- Issue 373756: accessibility: accented/currency/emoji keys entered via on screen keyboard do not show (ee£????????)
- Issue 373934: Not able to delete a letter followed by a space on Google search box
- Issue 373946: Keyboard stopped to work in Chromium
- Issue 374077: MacViews: Implement a ui::InputMethod for Mac
- Issue 374882: problem to install the new version on Ubuntu 10.04
- Issue 374950: AltGr moves curses to the left in input boxes (but not address bar).
- Issue 375659: Tooltip text isn't visible when using dark GTK theme + Aura
- Issue 375670: Deadkey (apostrophe) shows up after first hit
- Issue 375684: Problem with national characters
- Issue 375758: Chrome V.35 seems to no longer provide WM hints used by some window manegers like WindowMaker
- Issue 375827: Web MIDI api completely broken on linux
- Issue 375866: libappindicator support broken in Fedora 20
- Issue 375909: Chrome 35 on Ubuntu x64 does not pick up OpenJDK 1.7
- Issue 376258: Error typing accented letters
- Issue 376346: Weird text-rendering in Korean Italic case only on ubuntu.
- Issue 376515: Omnibox has dark background since Chrome 35 (Linux, KDE, Aura)
- Issue 376616: REGRESSION: Chromium raises even if click-to-raise is disabled on the current WM
- Issue 377203: Cursor moves back if Rigth Alt is pressed in text box
- Issue 379931: Japanese IME doesn't work at all
- Issue 381597: Chrome doesn't handle Linux X11 forward key event anymore (breaks our language's IME)
- Issue 382201: infolist_window grabs the focus which causes a weird effect on Japanese input
- Issue 383009: (restricted)
- Issue 390190: Microsoft Word / RichEdit specific keyboard shortcuts for international characters are no longer supported
- Issue 391668: (restricted)
- Issue 392875: Cannot input letter "i"
- Issue 393691: Cannot enter aA umlauts while
- Issue 394416: (restricted)
- Issue 395019: linux: XLookupString doesn't support some characters.
- Issue 395470: Cannot type the letters "c" and "h" in web pages
- Issue 397143: M36 Regression: Custom keyboard layouts extensions don't work on startup.
- Issue 398799: IME does not work 64-bit Chrome
- Issue 398890: Caret position randomness when using Google Japanese IME
- Issue 399864: a, o and u not working
- Issue 400736: Can't delete Emoji at google.com search box.
- Issue 402307: With Dvorak International, altgr falls back to qwerty instead of 3rd level
- Issue 403347: On Windows laptops with touch screens the virtual keyboard pops up incorrectly
- Issue 404752: (restricted)
- Issue 404767: (restricted)
- Issue 406233: Chrome crashed, no specific step to reproduce just I was running debug version of he chrome. and doing random operation.
- Issue 407207: Add a visual indicator for internal IME states
- Issue 407233: IME: Empty compositionend event fired after complete composition in Pinyin on Linux, signals cancellation
- Issue 407256: IME: Chrome does not fire any composition events for CJK spaces
- Issue 408561: cannot choose other layouts than US or Japanese with Japanese IME (like AZERTY etc.)
- Issue 409016: Memory leak in MidiManagerAlsa implementation
- Issue 409709: ideographs in Chinese and Japanese show as empty space in Linux in UI elements like tooltips, addressbar and Ctrl+F search entry
- Issue 411747: Chinese input method doen't work correctly sometimes, for unknown reason
- Issue 411768: Can't input non-default language
- Issue 411788: Notifications from extension disables the connection to ibus
- Issue 414258: Regression: "Ctrl+tab" keyboard shortcut doesn't work after reloading sad/crashed tab.
- Issue 417152: Regression:Touch selection quick menu appears on deleting url from chrome://settings/startup on touch device.
- Issue 421645: (restricted)
- Issue 421980: IME does not work in Chrome OS mode on Windows 7
- Issue 422203: (restricted)
- Issue 422685: Backspace submits composition string unexpectedly
- Issue 424680: Update and start using Android SDK 21
- Issue 424902: Web pages containing Java Applets not working well
- Issue 427780: Out-of-order & slow key input on Linux/ChromeOS
- Issue 428516: new Korean IME: cannot enter a number and a punctuation after a standalone Hangul consonant or vowel
- Issue 429957: Korean input issue while deleting characters
- Issue 430997: Roll android aosp to lollipop
- Issue 433715: Chinese font selected while typing Japanese font in search box
- Issue 437764: ibus-based IMEs may not work with Google Chrome after rebooting the computer