Boolean NetscapeDomainHandler::IsSpecialDomain(
    /* [in] */ const String& domain)
{
    String ucDomain = domain.ToUpperCase(/*ILocale::ENGLISH*/);
    return ucDomain.EndWith(".COM")
            || ucDomain.EndWith(".EDU")
            || ucDomain.EndWith(".NET")
            || ucDomain.EndWith(".GOV")
            || ucDomain.EndWith(".MIL")
            || ucDomain.EndWith(".ORG")
            || ucDomain.EndWith(".INT");
}
Esempio n. 2
0
ECode CProxyProperties::IsExcluded(
    /* [in] */ const String& url,
    /* [out] */ Boolean* result)
{
    VALIDATE_NOT_NULL(result);
    Int32 length;
    length = mParsedExclusionList->GetLength();
    AutoPtr<ICharSequence> chars;
    CStringWrapper::New(url, (ICharSequence**)&chars);
    if (TextUtils::IsEmpty((ICharSequence*)&chars) || mParsedExclusionList == NULL ||length == 0) {
        *result = FALSE;
        return NOERROR;
    }
    AutoPtr<IUri> u;
    Uri::Parse(url, (IUri**)&u);
    String urlDomain;
    u->GetHost(&urlDomain);

    if (urlDomain.IsNull()) {
        *result = FALSE;
        return NOERROR;
    }
    Int32 length2;
    length2 = mParsedExclusionList->GetLength();
    for (Int32 i = 0; i< length2; i+=2) {
        if (urlDomain.Equals((*mParsedExclusionList)[i]) || urlDomain.EndWith((*mParsedExclusionList)[i+1])) {
            *result =  TRUE;
            return NOERROR;
        }
    }
    *result = FALSE;
    return NOERROR;
}
Esempio n. 3
0
String URLUtil::GuessUrl(
    /* [in] */ const String& _inUrl)
{
    String inUrl = _inUrl;
    AutoPtr<IWebAddress> webAddress;

//    if (DebugFlags.URL_UTIL) Log.v(LOGTAG, "guessURL before queueRequest: " + inUrl);

    if (inUrl.IsEmpty()) {
        return inUrl;
    }
    if (inUrl.StartWith("about:")) {
        return inUrl;
    }
    // Do not try to interpret data scheme URLs
    if (inUrl.StartWith("data:")) {
        return inUrl;
    }
    // Do not try to interpret file scheme URLs
    if (inUrl.StartWith("file:")) {
        return inUrl;
    }
    // Do not try to interpret javascript scheme URLs
    if (inUrl.StartWith("javascript:")) {
        return inUrl;
    }

    // bug 762454: strip period off end of url
    if (inUrl.EndWith(".") == TRUE) {
        inUrl = inUrl.Substring(0, inUrl.GetLength() - 1);
    }

    assert(0);

    //try {
//        webAddress = new WebAddress(inUrl);
    //} catch (ParseException ex) {

    //    if (DebugFlags.URL_UTIL) {
    //        Log.v(LOGTAG, "smartUrlFilter: failed to parse url = " + inUrl);
    //    }
    //    return retVal;
    //}

    // Check host
//    if (webAddress->GetHost().IndexOf('.') == -1) {
//        StringBuilder sb;
//        sb.Append("www.");
//        sb.Append(webAddress->GetHost());
//        sb.Append(".com");
        // no dot: user probably entered a bare domain.  try .com
//        webAddress->SetHost(sb.ToString());
//    }
//    return webAddress->ToString();
    return String(NULL);
}
AutoPtr<IInetAddress> InetAddress::ParseNumericAddressNoThrow(
    /* [in] */ const String& _address)
{
    String address = _address;
    if (address.StartWith("[") && address.EndWith("]") && address.IndexOf(':') != -1) {
       address = address.Substring(1, address.GetLength() - 1);
    }
    AutoPtr<IStructAddrinfo> hints;
    CStructAddrinfo::New((IStructAddrinfo**)&hints);
    hints->SetFlags(AI_NUMERICHOST);
    AutoPtr< ArrayOf<IInetAddress*> > info;
    CLibcore::sOs->Elastos_getaddrinfo(address, hints, NETID_UNSET, (ArrayOf<IInetAddress*>**)&info);
    if (info == NULL)
        return NULL;

    AutoPtr<IInetAddress> result = (*info)[0];
    return result;
}
ActivityChooserModel::ActivityChooserModel(
    /* [in] */ IContext* context,
    /* [in] */ const String& historyFileName)
{
    mPackageMonitor = new DataModelPackageMonitor(this);
    mActivitySorter = new DefaultSorter(this);
    mHistoryMaxSize = DEFAULT_HISTORY_MAX_LENGTH;
    mCanReadHistoricalData = TRUE;
    mReadShareHistoryCalled = FALSE;
    mHistoricalRecordsChanged = TRUE;
    mReloadActivities = FALSE;

    context->GetApplicationContext((IContext**)&mContext);
    if (!TextUtils::IsEmpty(historyFileName) && !historyFileName.EndWith(HISTORY_FILE_EXTENSION)) {
        mHistoryFileName = historyFileName + HISTORY_FILE_EXTENSION;
    } else {
        mHistoryFileName = historyFileName;
    }
    mPackageMonitor->Register(mContext, NULL, TRUE);
}
ECode IntentTile::Create(
    /* [in] */ IQSTileHost* host,
    /* [in] */ const String& spec,
    /* [out] */ IQSTile** tile)
{
    VALIDATE_NOT_NULL(tile);
    if (spec == NULL || !spec.StartWith(PREFIX) || !spec.EndWith(")")) {
        tile = NULL;
        // throw new IllegalArgumentException("Bad intent tile spec: " + spec);
        return E_ILLEGAL_ARGUMENT_EXCEPTION;
    }
    const String action = spec.Substring(PREFIX.GetLength(), spec.GetLength() - 1);
    if (action.IsEmpty()) {
        tile = NULL;
        // throw new IllegalArgumentException("Empty intent tile spec action");
        return E_ILLEGAL_ARGUMENT_EXCEPTION;
    }
    *tile = new IntentTile(host, action);
    REFCOUNT_ADD(*tile);
    return NOERROR;
}
Esempio n. 7
0
void SettingsHelper::SetGpsLocation(
    /* [in] */ const String& value)
{
    AutoPtr<IInterface> obj;
    mContext->GetSystemService(IContext::USER_SERVICE, (IInterface**)&obj);
    AutoPtr<IUserManager> um = IUserManager::Probe(obj);
    Boolean res;
    if (um->HasUserRestriction(IUserManager::DISALLOW_SHARE_LOCATION, &res), res) {
        return;
    }

    String GPS = ILocationManager::GPS_PROVIDER;
    Boolean enabled = GPS.Equals(value) ||
            value.StartWith(GPS + String(",")) ||
            value.EndWith(String(",") + GPS) ||
            value.Contains(String(",") + GPS + String(","));
    AutoPtr<ISettingsSecure> secure;
    CSettingsSecure::AcquireSingleton((ISettingsSecure**)&secure);
    AutoPtr<IContentResolver> resolver;
    mContext->GetContentResolver((IContentResolver**)&resolver);
    secure->SetLocationProviderEnabled(resolver, GPS, enabled);
}
Esempio n. 8
0
ECode RuntimeInit::InvokeStaticMain(
    /* [in] */ const String& moduleName,
    /* [in] */ const String& className,
    /* [in] */ ArrayOf<String>* argv,
    /* [out] */ IRunnable** task)
{
    VALIDATE_NOT_NULL(task);
    *task = NULL;

    if (DEBUG) {
        Slogger::I(TAG, "InvokeStaticMain: %s, %s", moduleName.string(), className.string());
        if (argv) {
            for (Int32 i = 0; i < argv->GetLength(); ++i) {
                Slogger::I(TAG, "  >> arg %d: %s", i, (*argv)[i].string());
            }
        }
    }

    AutoPtr<IModuleInfo> moduleInfo;
    AutoPtr<IClassInfo> classInfo;
    AutoPtr<IInterface> object;
    AutoPtr<IMethodInfo> methodInfo;

    ECode ec = NOERROR;
    if (moduleName.EndWith("Elastos.Droid.Core.eco")) {
        AutoPtr<IClassLoader> cl = ClassLoader::GetSystemClassLoader();
        ec = cl->LoadClass(className, (IClassInfo**)&classInfo);
    }
    else {
        ec = _CReflector_AcquireModuleInfo(moduleName, (IModuleInfo**)&moduleInfo);
        if (FAILED(ec)) {
            Slogger::E("RuntimeInit::InvokeStaticMain", "Acquire %s module info failed!\n", moduleName.string());
            return ec;
        }

        ec = moduleInfo->GetClassInfo(className, (IClassInfo**)&classInfo);
    }

    if (FAILED(ec)) {
        Slogger::E("RuntimeInit::InvokeStaticMain", "Acquire %s, %s class info failed!\n",
            moduleName.string(), className.string());
        return ec;
    }

    ec = classInfo->CreateObject((IInterface**)&object);
    if (FAILED(ec)) {
        Slogger::E("RuntimeInit::InvokeStaticMain: %s, %s", moduleName.string(), className.string());
        return ec;
    }

    ec = classInfo->GetMethodInfo(
            String("Main"), String("([LElastos/String;)E"), (IMethodInfo**)&methodInfo);
    if (FAILED(ec)) {
        Slogger::E("RuntimeInit::InvokeStaticMain", "Acquire  %s, %s \"Main\" method info failed!",
            moduleName.string(), className.string());
        return ec;
    }

    /*
     * This throw gets caught in ZygoteInit.main(), which responds
     * by invoking the exception's run() method. This arrangement
     * clears up all the stack frames that were required in setting
     * up the process.
     */
    *task = new CZygoteInit::MethodAndArgsCaller(object, methodInfo, argv);
    REFCOUNT_ADD(*task);
    return NOERROR;
}
Esempio n. 9
0
ECode IconPackHelper::LoadResourcesFromXmlParser(
    /* [in] */ IXmlPullParser* parser,
    /* [in] */ IMap* iconPackResources)
{
    mIconBackCount = 0;
    Int32 eventType;
    parser->GetEventType(&eventType);
    do {
        if (eventType != IXmlPullParser::START_TAG) {
            continue;
        }

        if (ParseComposedIconComponent(parser, iconPackResources)) {
            continue;
        }

        Boolean result;
        FAIL_RETURN(ColorFilterUtils::ParseIconFilter(parser, mFilterBuilder, &result));
        if (result) {
            continue;
        }

        String strName;
        if (parser->GetName(&strName), strName.EqualsIgnoreCase(ICON_SCALE_TAG)) {
            String factor;
            parser->GetAttributeValue(String(NULL), String("factor"), &factor);
            if (factor.IsNull()) {
                Int32 count;
                if (parser->GetAttributeCount(&count), count == 1) {
                    parser->GetAttributeValue(0, &factor);
                }
            }
            iconPackResources->Put(ICON_SCALE_COMPONENT, CoreUtils::Convert(factor));
            continue;
        }

        if (parser->GetName(&strName), !strName.EqualsIgnoreCase("item")) {
            continue;
        }

        String component;
        parser->GetAttributeValue(String(NULL), String("component"), &component);
        String drawable;
        parser->GetAttributeValue(String(NULL), String("drawable"), &drawable);

        // Validate component/drawable exist
        if (TextUtils::IsEmpty(component) || TextUtils::IsEmpty(drawable)) {
            continue;
        }

        // Validate format/length of component
        if (!component.StartWith("ComponentInfo{") || !component.EndWith("}")
                || component.GetLength() < 16 || drawable.GetLength() == 0) {
            continue;
        }

        // Sanitize stored value
        component = component.Substring(14, component.GetLength() - 1).ToLowerCase();

        AutoPtr<IComponentName> name;
        if (!component.Contains("/")) {
            // Package icon reference
            CComponentName::New(component.ToLowerCase(), String(""), (IComponentName**)&name);
        }
        else {
            CComponentName::UnflattenFromString(component, (IComponentName**)&name);
        }

        if (name != NULL) {
            iconPackResources->Put(name, CoreUtils::Convert(drawable));
        }
    } while (parser->Next(&eventType), eventType != IXmlPullParser::END_DOCUMENT);
    return NOERROR;
}
Esempio n. 10
0
String URLUtil::GuessFileName(
    /* [in] */ const String& url,
    /* [in] */ const String& contentDisposition,
    /* [in] */ const String& _mimeType)
{
    String filename;
    String extension;
    String mimeType = _mimeType;

    // If we couldn't do anything with the hint, move toward the content disposition
    if (filename.IsNull() && !contentDisposition.IsNull()) {
        filename = ParseContentDisposition(contentDisposition);
        if (!filename.IsNull()) {
            Int32 index = filename.LastIndexOf('/') + 1;
            if (index > 0) {
                filename = filename.Substring(index);
            }
        }
    }

    // If all the other http-related approaches failed, use the plain uri
    if (filename.IsNull()) {
        String decodedUrl;
        Uri::Decode(url, &decodedUrl);
        if (!decodedUrl.IsNull()) {
            Int32 queryIndex = decodedUrl.IndexOf('?');
            // If there is a query string strip it, same as desktop browsers
            if (queryIndex > 0) {
                decodedUrl = decodedUrl.Substring(0, queryIndex);
            }
            if (!decodedUrl.EndWith("/")) {
                Int32 index = decodedUrl.LastIndexOf('/') + 1;
                if (index > 0) {
                    filename = decodedUrl.Substring(index);
                }
            }
        }
    }

    // Finally, if couldn't get filename from URI, get a generic filename
    if (filename.IsNull()) {
        filename = "downloadfile";
    }

    // Split filename between base and extension
    // Add an extension if filename does not have one
    Int32 dotIndex = filename.IndexOf('.');
    if (dotIndex < 0) {
        if (!mimeType.IsNull()) {
            AutoPtr<MimeTypeMap> mimeTypeMap = MimeTypeMap::GetSingleton();
            mimeTypeMap->GetExtensionFromMimeType(mimeType, &extension);
            if (!extension.IsNull()) {
                extension = String(".") + extension;
            }
        }
        if (extension.IsNull()) {
            if (!mimeType.IsNull() && mimeType.StartWithIgnoreCase("text/")) {
                if (mimeType.EqualsIgnoreCase("text/html")) {
                    extension = ".html";
                }
                else {
                    extension = ".txt";
                }
            }
            else {
                extension = ".bin";
            }
        }
    }
    else {
        if (!mimeType.IsNull()) {
            // Compare the last segment of the extension against the mime type.
            // If there's a mismatch, discard the entire extension.
            Int32 lastDotIndex = filename.LastIndexOf('.');
            AutoPtr<MimeTypeMap> mimeTypeMap = MimeTypeMap::GetSingleton();
            String typeFromExt;
            mimeTypeMap->GetMimeTypeFromExtension(
                    filename.Substring(lastDotIndex + 1), &typeFromExt);
            if (!typeFromExt.IsNull() && !typeFromExt.EqualsIgnoreCase(mimeType)) {
                mimeTypeMap->GetExtensionFromMimeType(mimeType, &extension);
                if (!extension.IsNull()) {
                    extension = String(".") + extension;
                }
            }
        }
        if (extension.IsNull()) {
            extension = filename.Substring(dotIndex);
        }
        filename = filename.Substring(0, dotIndex);
    }

    return filename + extension;
}
Esempio n. 11
0
ECode CResources::LoadColorStateList(
    /* [in] */ ITypedValue* value,
    /* [in] */ Int32 id,
    /* [out] */ IColorStateList** csl)
{
//        if (TRACE_FOR_PRELOAD) {
//            // Log only framework resources
//            if ((id >>> 24) == 0x1) {
//                final String name = getResourceName(id);
//                if (name != null) android.util.Log.d("PreloadColorStateList", name);
//            }
//        }

    Int32 key = (((CTypedValue*)value)->mAssetCookie << 24) | ((CTypedValue*)value)->mData;

    if (((CTypedValue*)value)->mType >= TypedValue_TYPE_FIRST_COLOR_INT &&
            ((CTypedValue*)value)->mType <= TypedValue_TYPE_LAST_COLOR_INT) {

        HashMap<Int32, AutoPtr<IColorStateList> >::Iterator it =
                mPreloadedColorStateLists->Find(key);
        *csl = it != mPreloadedColorStateLists->End()? it->mSecond : NULL;
        if (*csl != NULL) {
            (*csl)->AddRef();
            return NOERROR;
        }

        assert(SUCCEEDED(CColorStateList::ValueOf(((CTypedValue*)value)->mData, csl)));
        if (mPreloading) {
            (*mPreloadedColorStateLists)[key] = *csl;
        }

        return NOERROR;
    }

    GetCachedColorStateList(key, csl);
    if (*csl != NULL) {
        return NOERROR;
    }

    HashMap<Int32, AutoPtr<IColorStateList> >::Iterator it =
                mPreloadedColorStateLists->Find(key);
    *csl = it != mPreloadedColorStateLists->End()? it->mSecond : NULL;
    if (*csl != NULL) {
        (*csl)->AddRef();
        return NOERROR;
    }

    if (((CTypedValue*)value)->mString == NULL) {
        Logger::E(TAG, StringBuffer("Resource is not a ColorStateList (color or path): ") + (Int32)value);
        *csl = NULL;
        return E_NOT_FOUND_EXCEPTION;
    }

    String file;
    ((CTypedValue*)value)->mString->ToString(&file);

    if (file.EndWith(".xml")) {
        //try {
            AutoPtr<IXmlResourceParser> rp;
            LoadXmlResourceParser(
                file, id, ((CTypedValue*)value)->mAssetCookie, "colorstatelist",
                (IXmlResourceParser**)&rp);
            CColorStateList::CreateFromXml(this, rp, csl);
            rp->Close();
        //} catch (Exception e) {
        //    NotFoundException rnf = new NotFoundException(
        //        "File " + file + " from color state list resource ID #0x"
        //        + Integer.toHexString(id));
        //    rnf.initCause(e);
        //    throw rnf;
        //}
    }
    else {
        //throw new NotFoundException(
        //        "File " + file + " from drawable resource ID #0x"
        //        + Integer.toHexString(id) + ": .xml extension required");
        return E_NOT_FOUND_EXCEPTION;
    }

    if (*csl != NULL) {
        if (mPreloading) {
            (*mPreloadedColorStateLists)[key] = *csl;
        } else {
            Mutex::Autolock lock(mTmpValueLock);

            //Log.i(TAG, "Saving cached color state list @ #" +
            //        Integer.toHexString(key.intValue())
            //        + " in " + this + ": " + csl);
            mColorStateListCache[key] = *csl;
        }
    }

    return NOERROR;
}
Esempio n. 12
0
ECode CResources::LoadDrawable(
    /* [in] */ ITypedValue* value,
    /* [in] */ Int32 id,
    /* [out] */ IDrawable** drawable)
{
    if (TRACE_FOR_PRELOAD) {
        // Log only framework resources
//            if ((id >>> 24) == 0x1) {
//                final String name = GetResourceName(id);
//                if (name != null) android.util.Log.d("PreloadDrawable", name);
//            }
    }

    Int64 key = (((Int64)((CTypedValue*)value)->mAssetCookie) << 32) | ((CTypedValue*)value)->mData;
    GetCachedDrawable(key, drawable);

    if (*drawable != NULL) {
        return NOERROR;
    }

    HashMap<Int64, AutoPtr<IDrawableConstantState> >::Iterator it =
            sPreloadedDrawables->Find(key);
    AutoPtr<IDrawableConstantState> cs =
            it != sPreloadedDrawables->End()? it->mSecond : NULL;
    if (cs != NULL) {
        cs->NewDrawableEx((IResources*)this, drawable);
    }
    else {
        if (((CTypedValue*)value)->mType >= TypedValue_TYPE_FIRST_COLOR_INT &&
                ((CTypedValue*)value)->mType <= TypedValue_TYPE_LAST_COLOR_INT) {
            CColorDrawable::New(((CTypedValue*)value)->mData, (IColorDrawable**)drawable);
        }

        if (*drawable == NULL) {
            if (((CTypedValue*)value)->mString == NULL) {
                Logger::E(TAG, StringBuffer("Resource is not a Drawable (color or path): ") + (Int32)value);
                *drawable = NULL;
                return E_NOT_FOUND_EXCEPTION;
            }

            String file;
            ((CTypedValue*)value)->mString->ToString(&file);

            if (DEBUG_LOAD) {
                Logger::V(TAG, StringBuffer("Loading drawable for cookie ")
                    + ((CTypedValue*)value)->mAssetCookie + ": " + file);
            }

            if (file.EndWith(".xml")) {
//                    try {
                 AutoPtr<IXmlResourceParser> rp;
                 LoadXmlResourceParser(file, id, ((CTypedValue*)value)->mAssetCookie,
                        "drawable", (IXmlResourceParser**)&rp);
                 Drawable::CreateFromXml(this, rp, drawable);
                 rp->Close();
//                    } catch (Exception e) {
//                        NotFoundException rnf = new NotFoundException(
//                            "File " + file + " from drawable resource ID #0x"
//                            + Integer.toHexString(id));
//                        rnf.initCause(e);
//                        throw rnf;
//                    }
//
            }
            else {
//                    try {
                AutoPtr<IInputStream> is;
                ASSERT_SUCCEEDED(mAssets->OpenNonAssetEx3(
                    ((CTypedValue*)value)->mAssetCookie, file,
                    AssetManager_ACCESS_STREAMING, (IInputStream**)&is));
    //                System.out.println("Opened file " + file + ": " + is);
                Drawable::CreateFromResourceStream((IResources*)this, value, is,
                        file, NULL, drawable);
                is->Close();
    //                System.out.println("Created stream: " + dr);
//                    } catch (Exception e) {
//                        NotFoundException rnf = new NotFoundException(
//                            "File " + file + " from drawable resource ID #0x"
//                            + Integer.toHexString(id));
//                        rnf.initCause(e);
//                        throw rnf;
//                    }
            }
        }
    }

    if (*drawable != NULL) {
        AutoPtr<IDrawableConstantState> cs2;
        (*drawable)->SetChangingConfigurations(((CTypedValue*)value)->mChangingConfigurations);
        (*drawable)->GetConstantState((IDrawableConstantState**)&cs2);
        if (cs2 != NULL) {
            if (mPreloading) {
                (*sPreloadedDrawables)[key] = cs2;
            }
            else {
                Mutex::Autolock lock(mTmpValueLock);
                //Log.i(TAG, "Saving cached drawable @ #" +
                //        Integer.toHexString(key.intValue())
                //        + " in " + this + ": " + cs2);
                mDrawableCache[key] = cs2;
            }
        }
    }

    return NOERROR;
}