1 /* 2 * Copyright 2009, The Android Open Source Project 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * * Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * * Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26 #include "CachedPrefix.h" 27 #include "CachedInput.h" 28 29 namespace android { 30 31 void CachedInput::init() { 32 bzero(this, sizeof(CachedInput)); 33 mName = WTF::String(); 34 } 35 36 void CachedInput::setTypeFromElement(WebCore::HTMLInputElement* element) 37 { 38 ASSERT(element); 39 40 if (element->isPasswordField()) 41 mType = PASSWORD; 42 else if (element->isSearchField()) 43 mType = SEARCH; 44 else if (element->isEmailField()) 45 mType = EMAIL; 46 else if (element->isNumberField()) 47 mType = NUMBER; 48 else if (element->isTelephoneField()) 49 mType = TELEPHONE; 50 else if (element->isURLField()) 51 mType = URL; 52 else 53 mType = NORMAL_TEXT_FIELD; 54 } 55 56 #if DUMP_NAV_CACHE 57 58 #define DEBUG_PRINT_BOOL(field) \ 59 DUMP_NAV_LOGD("// bool " #field "=%s;\n", b->field ? "true" : "false") 60 61 CachedInput* CachedInput::Debug::base() const { 62 CachedInput* nav = (CachedInput*) ((char*) this - OFFSETOF(CachedInput, mDebug)); 63 return nav; 64 } 65 66 static void printWebCoreString(const char* label, 67 const WTF::String& string) { 68 char scratch[256]; 69 size_t index = snprintf(scratch, sizeof(scratch), label); 70 const UChar* ch = string.characters(); 71 while (ch && *ch && index < sizeof(scratch)) { 72 UChar c = *ch++; 73 if (c < ' ' || c >= 0x7f) c = ' '; 74 scratch[index++] = c; 75 } 76 DUMP_NAV_LOGD("%.*s\"\n", index, scratch); 77 } 78 79 void CachedInput::Debug::print() const 80 { 81 CachedInput* b = base(); 82 DEBUG_PRINT_BOOL(mAutoComplete); 83 DUMP_NAV_LOGD("// void* mForm=%p;\n", b->mForm); 84 printWebCoreString("// char* mName=\"", b->mName); 85 DUMP_NAV_LOGD("// int mMaxLength=%d;\n", b->mMaxLength); 86 DUMP_NAV_LOGD("// int mPaddingLeft=%d;\n", b->mPaddingLeft); 87 DUMP_NAV_LOGD("// int mPaddingTop=%d;\n", b->mPaddingTop); 88 DUMP_NAV_LOGD("// int mPaddingRight=%d;\n", b->mPaddingRight); 89 DUMP_NAV_LOGD("// int mPaddingBottom=%d;\n", b->mPaddingBottom); 90 DUMP_NAV_LOGD("// float mTextSize=%f;\n", b->mTextSize); 91 DUMP_NAV_LOGD("// int mLineHeight=%d;\n", b->mLineHeight); 92 DUMP_NAV_LOGD("// Type mType=%d;\n", b->mType); 93 DEBUG_PRINT_BOOL(mIsRtlText); 94 DEBUG_PRINT_BOOL(mIsTextField); 95 DEBUG_PRINT_BOOL(mIsTextArea); 96 } 97 98 #endif 99 100 } 101