diff options
author | Ben Murdoch <benm@google.com> | 2011-07-27 13:53:42 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-08-16 16:40:55 +0100 |
commit | ce03c1c1203621e552d41a8b3831837636f364a9 (patch) | |
tree | d2ec3d82cadc9d5a66ea73ade2932de955e4618f /Source/WebKit/android/RenderSkinAndroid.cpp | |
parent | 0f0dadb092f4aaa1a34d293f9c4b2a14e3b3e3df (diff) | |
download | external_webkit-ce03c1c1203621e552d41a8b3831837636f364a9.zip external_webkit-ce03c1c1203621e552d41a8b3831837636f364a9.tar.gz external_webkit-ce03c1c1203621e552d41a8b3831837636f364a9.tar.bz2 |
Lazily decode assets for form controls.
Rather than decoding the graphics when we create a WebView, wait until
we actually need them. This saves about 50ms on native WebView creation time.
Requires frameworks/base change:
I5a2e87d03d73fa74ebb00c33567783225ed97d3a
Bug: 5084146
Change-Id: Ia6c17634f535ed75b2a0757ac4d53f1a0befb78a
Diffstat (limited to 'Source/WebKit/android/RenderSkinAndroid.cpp')
-rw-r--r-- | Source/WebKit/android/RenderSkinAndroid.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/Source/WebKit/android/RenderSkinAndroid.cpp b/Source/WebKit/android/RenderSkinAndroid.cpp index 9383a9c..8aedd9e 100644 --- a/Source/WebKit/android/RenderSkinAndroid.cpp +++ b/Source/WebKit/android/RenderSkinAndroid.cpp @@ -33,21 +33,28 @@ #include "RenderSkinRadio.h" #include "SkImageDecoder.h" -#include "utils/AssetManager.h" -#include "utils/Asset.h" +#include <utils/AssetManager.h> +#include <utils/Asset.h> namespace WebCore { +String RenderSkinAndroid::s_drawableDirectory = ""; +RenderSkinAndroid::Resolution RenderSkinAndroid::s_drawableResolution = RenderSkinAndroid::MedRes; + RenderSkinAndroid::~RenderSkinAndroid() { delete m_button; } -RenderSkinAndroid::RenderSkinAndroid(android::AssetManager* am, String drawableDirectory) +RenderSkinAndroid::RenderSkinAndroid(String drawableDirectory) { - m_button = new RenderSkinButton(am, drawableDirectory); - RenderSkinCombo::Init(am, drawableDirectory); - RenderSkinMediaButton::Init(am, drawableDirectory); - RenderSkinRadio::Init(am, drawableDirectory); + if (s_drawableDirectory.isEmpty() && !drawableDirectory.isEmpty()) { + s_drawableResolution = MedRes; + if (drawableDirectory.endsWith("-hdpi/")) + s_drawableResolution = HighRes; + + s_drawableDirectory = drawableDirectory; + } + m_button = new RenderSkinButton(drawableDirectory); } bool RenderSkinAndroid::DecodeBitmap(android::AssetManager* am, const char* fileName, SkBitmap* bitmap) |