1474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* 2474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * Copyright (C) 2007, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. 3474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * 4474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * Redistribution and use in source and binary forms, with or without 5474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * modification, are permitted provided that the following conditions 6474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * are met: 7474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * 1. Redistributions of source code must retain the above copyright 8474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * notice, this list of conditions and the following disclaimer. 9474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * 2. Redistributions in binary form must reproduce the above copyright 10474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * notice, this list of conditions and the following disclaimer in the 11474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * documentation and/or other materials provided with the distribution. 12474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * 136fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 14474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 17474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org */ 25474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 26474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "config.h" 27474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "core/html/HTMLAudioElement.h" 28474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 29474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "core/HTMLNames.h" 30474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "core/dom/shadow/ShadowRoot.h" 31474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 32474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgnamespace blink { 33474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 34474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgusing namespace HTMLNames; 35474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 36474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgHTMLAudioElement::HTMLAudioElement(Document& document) 37474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org : HTMLMediaElement(audioTag, document) 38474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 39474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 40474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 41474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgPassRefPtrWillBeRawPtr<HTMLAudioElement> HTMLAudioElement::create(Document& document) 42474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 43474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org RefPtrWillBeRawPtr<HTMLAudioElement> audio = adoptRefWillBeNoop(new HTMLAudioElement(document)); 44474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org audio->ensureUserAgentShadowRoot(); 45474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org audio->suspendIfNeeded(); 46474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org return audio.release(); 47474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 48474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 49474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgPassRefPtrWillBeRawPtr<HTMLAudioElement> HTMLAudioElement::createForJSConstructor(Document& document, const AtomicString& src) 50474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 51474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org RefPtrWillBeRawPtr<HTMLAudioElement> audio = adoptRefWillBeNoop(new HTMLAudioElement(document)); 52474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org audio->ensureUserAgentShadowRoot(); 53474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org audio->setPreload(AtomicString("auto", AtomicString::ConstructFromLiteral)); 54474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if (!src.isNull()) 55474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org audio->setSrc(src); 56474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org audio->suspendIfNeeded(); 57474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org return audio.release(); 58474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 59474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 60474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 61474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org