summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/android/RenderSkinAndroid.cpp
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-07-27 13:53:42 +0100
committerBen Murdoch <benm@google.com>2011-08-16 16:40:55 +0100
commitce03c1c1203621e552d41a8b3831837636f364a9 (patch)
treed2ec3d82cadc9d5a66ea73ade2932de955e4618f /Source/WebKit/android/RenderSkinAndroid.cpp
parent0f0dadb092f4aaa1a34d293f9c4b2a14e3b3e3df (diff)
downloadexternal_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.cpp21
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)