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/core/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 blink {
     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     DEFINE_WRAPPERTYPEINFO();
     45 public:
     46     static PassRefPtrWillBeRawPtr<DOMURL> create(const String& url, ExceptionState& exceptionState)
     47     {
     48         return adoptRefWillBeNoop(new DOMURL(url, blankURL(), exceptionState));
     49     }
     50     static PassRefPtrWillBeRawPtr<DOMURL> create(const String& url, const String& base, ExceptionState& exceptionState)
     51     {
     52         return adoptRefWillBeNoop(new DOMURL(url, KURL(KURL(), base), exceptionState));
     53     }
     54     static PassRefPtrWillBeRawPtr<DOMURL> create(const String& url, PassRefPtrWillBeRawPtr<DOMURL> base, ExceptionState& exceptionState)
     55     {
     56         ASSERT(base);
     57         return adoptRefWillBeNoop(new DOMURL(url, base->m_url, exceptionState));
     58     }
     59 
     60     static String createObjectURL(ExecutionContext*, Blob*, ExceptionState&);
     61     static void revokeObjectURL(ExecutionContext*, const String&);
     62 
     63     static String createPublicURL(ExecutionContext*, URLRegistrable*, const String& uuid = String());
     64     static void revokeObjectUUID(ExecutionContext*, const String&);
     65 
     66     virtual KURL url() const OVERRIDE { return m_url; }
     67     virtual void setURL(const KURL& url) OVERRIDE { m_url = url; }
     68 
     69     virtual String input() const OVERRIDE { return m_input; }
     70     virtual void setInput(const String&) OVERRIDE;
     71 
     72     void trace(Visitor*) { }
     73 
     74 private:
     75     DOMURL(const String& url, const KURL& base, ExceptionState&);
     76 
     77     KURL m_url;
     78     String m_input;
     79 };
     80 
     81 } // namespace blink
     82 
     83 #endif // DOMURL_h
     84