Home | History | Annotate | Download | only in dom
      1 /*
      2  * Copyright (C) 2011 Google Inc. All rights reserved.
      3  * Copyright (C) 2012 Motorola Mobility Inc.
      4  *
      5  * Redistribution and use in source and binary forms, with or without
      6  * modification, are permitted provided that the following conditions
      7  * are met:
      8  *
      9  * 1.  Redistributions of source code must retain the above copyright
     10  *     notice, this list of conditions and the following disclaimer.
     11  * 2.  Redistributions in binary form must reproduce the above copyright
     12  *     notice, this list of conditions and the following disclaimer in the
     13  *     documentation and/or other materials provided with the distribution.
     14  *
     15  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
     16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     18  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
     19  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     20  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     21  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
     22  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     24  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     25  */
     26 
     27 #ifndef DOMURL_h
     28 #define DOMURL_h
     29 
     30 #include "bindings/v8/ScriptWrappable.h"
     31 #include "core/dom/DOMURLUtils.h"
     32 #include "platform/heap/Handle.h"
     33 #include "platform/weborigin/KURL.h"
     34 #include "wtf/Forward.h"
     35 
     36 namespace WebCore {
     37 
     38 class Blob;
     39 class ExceptionState;
     40 class ExecutionContext;
     41 class URLRegistrable;
     42 
     43 class DOMURL FINAL : public RefCountedWillBeGarbageCollectedFinalized<DOMURL>, public ScriptWrappable, public DOMURLUtils {
     44 public:
     45     static PassRefPtrWillBeRawPtr<DOMURL> create(const String& url, ExceptionState& exceptionState)
     46     {
     47         return adoptRefWillBeNoop(new DOMURL(url, blankURL(), exceptionState));
     48     }
     49     static PassRefPtrWillBeRawPtr<DOMURL> create(const String& url, const String& base, ExceptionState& exceptionState)
     50     {
     51         return adoptRefWillBeNoop(new DOMURL(url, KURL(KURL(), base), exceptionState));
     52     }
     53     static PassRefPtrWillBeRawPtr<DOMURL> create(const String& url, PassRefPtrWillBeRawPtr<DOMURL> base, ExceptionState& exceptionState)
     54     {
     55         ASSERT(base);
     56         return adoptRefWillBeNoop(new DOMURL(url, base->m_url, exceptionState));
     57     }
     58 
     59     static String createObjectURL(ExecutionContext*, Blob*, ExceptionState&);
     60     static void revokeObjectURL(ExecutionContext*, const String&);
     61 
     62     static String createPublicURL(ExecutionContext*, URLRegistrable*, const String& uuid = String());
     63     static void revokeObjectUUID(ExecutionContext*, const String&);
     64 
     65     virtual KURL url() const OVERRIDE { return m_url; }
     66     virtual void setURL(const KURL& url) OVERRIDE { m_url = url; }
     67 
     68     virtual String input() const OVERRIDE { return m_input; }
     69     virtual void setInput(const String&) OVERRIDE;
     70 
     71     void trace(Visitor*) { }
     72 
     73 private:
     74     DOMURL(const String& url, const KURL& base, ExceptionState&);
     75 
     76     KURL m_url;
     77     String m_input;
     78 };
     79 
     80 } // namespace WebCore
     81 
     82 #endif // DOMURL_h
     83