Home | History | Annotate | Download | only in nav
      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