168513a70bcd92384395513322f1b801e7bf9c729Steve Block/*
2635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
3635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *
4635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * This library is free software; you can redistribute it and/or
5635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * modify it under the terms of the GNU Library General Public
6635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * License as published by the Free Software Foundation; either
7635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * version 2 of the License, or (at your option) any later version.
8635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *
9635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * This library is distributed in the hope that it will be useful,
10635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
11635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Library General Public License for more details.
13635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *
14635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * You should have received a copy of the GNU Library General Public License
15635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * along with this library; see the file COPYING.LIB.  If not, write to
16635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Boston, MA 02110-1301, USA.
18635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *
19635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */
20635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
21635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "config.h"
22635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
23635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if ENABLE(WML)
24635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "WMLImageLoader.h"
25635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
26635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "CachedImage.h"
27635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "HTMLNames.h"
28a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "HTMLParserIdioms.h"
29635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "WMLImageElement.h"
30635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "WMLNames.h"
31635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
32635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectnamespace WebCore {
33635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
34635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectusing namespace WMLNames;
35635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
36635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectWMLImageLoader::WMLImageLoader(WMLImageElement* element)
37635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    : ImageLoader(element)
38635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{
39635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
40635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
41635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectWMLImageLoader::~WMLImageLoader()
42635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{
43635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
44635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
45635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectvoid WMLImageLoader::dispatchLoadEvent()
46635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{
47635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    // WML doesn't fire any events.
48635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
49635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
50635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectString WMLImageLoader::sourceURI(const AtomicString& attr) const
51635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{
52a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    return KURL(element()->baseURI(), stripLeadingAndTrailingHTMLSpaces(attr));
53635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
54635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
55635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectvoid WMLImageLoader::notifyFinished(CachedResource* image)
56635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{
57635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    ImageLoader::notifyFinished(image);
58635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
59635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    if (!image->errorOccurred())
60635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        return;
61635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
62635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    WMLImageElement* imageElement = static_cast<WMLImageElement*>(element());
63635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    ASSERT(imageElement);
64635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
65635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    // Loading both 'localsrc' and 'src' failed. Ignore this image.
66635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    if (imageElement->useFallbackAttribute())
67635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        return;
68635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
69635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    if (!imageElement->hasAttribute(localsrcAttr) && !imageElement->hasAttribute(HTMLNames::srcAttr))
70635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        return;
71635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
72635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    imageElement->setUseFallbackAttribute(true);
73635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    updateFromElementIgnoringPreviousError();
74635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
75635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
76635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
77635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
78635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif
79