| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2012 Google Inc. All rights reserved. | 3 * Copyright (C) 2012 Google Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * | 8 * |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 ASSERT(controls); | 320 ASSERT(controls); |
| 321 | 321 |
| 322 Handle<MediaControlPanelMuteButtonElement> button = adoptTreeShared(new Medi
aControlPanelMuteButtonElement(document, controls)); | 322 Handle<MediaControlPanelMuteButtonElement> button = adoptTreeShared(new Medi
aControlPanelMuteButtonElement(document, controls)); |
| 323 button->ensureUserAgentShadowRoot(); | 323 button->ensureUserAgentShadowRoot(); |
| 324 button->setType("button"); | 324 button->setType("button"); |
| 325 return button; | 325 return button; |
| 326 } | 326 } |
| 327 | 327 |
| 328 void MediaControlPanelMuteButtonElement::acceptHeapVisitor(Visitor* visitor) con
st | 328 void MediaControlPanelMuteButtonElement::acceptHeapVisitor(Visitor* visitor) con
st |
| 329 { | 329 { |
| 330 visitor->visit(m_controls); |
| 330 MediaControlMuteButtonElement::acceptHeapVisitor(visitor); | 331 MediaControlMuteButtonElement::acceptHeapVisitor(visitor); |
| 331 } | 332 } |
| 332 | 333 |
| 333 void MediaControlPanelMuteButtonElement::defaultEventHandler(Event* event) | 334 void MediaControlPanelMuteButtonElement::defaultEventHandler(Event* event) |
| 334 { | 335 { |
| 335 if (event->type() == eventNames().mouseoverEvent) | 336 if (event->type() == eventNames().mouseoverEvent) |
| 336 m_controls->showVolumeSlider(); | 337 m_controls->showVolumeSlider(); |
| 337 | 338 |
| 338 MediaControlMuteButtonElement::defaultEventHandler(event); | 339 MediaControlMuteButtonElement::defaultEventHandler(event); |
| 339 } | 340 } |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 548 | 549 |
| 549 Result<MediaControlClosedCaptionsTrackListElement> MediaControlClosedCaptionsTra
ckListElement::create(Handle<Document> document, MediaControls* controls) | 550 Result<MediaControlClosedCaptionsTrackListElement> MediaControlClosedCaptionsTra
ckListElement::create(Handle<Document> document, MediaControls* controls) |
| 550 { | 551 { |
| 551 ASSERT(controls); | 552 ASSERT(controls); |
| 552 Handle<MediaControlClosedCaptionsTrackListElement> element = adoptTreeShared
(new MediaControlClosedCaptionsTrackListElement(document, controls)); | 553 Handle<MediaControlClosedCaptionsTrackListElement> element = adoptTreeShared
(new MediaControlClosedCaptionsTrackListElement(document, controls)); |
| 553 return element; | 554 return element; |
| 554 } | 555 } |
| 555 | 556 |
| 556 void MediaControlClosedCaptionsTrackListElement::acceptHeapVisitor(Visitor* visi
tor) const | 557 void MediaControlClosedCaptionsTrackListElement::acceptHeapVisitor(Visitor* visi
tor) const |
| 557 { | 558 { |
| 559 visitor->visit(m_menuItems); |
| 560 visitor->visit(m_controls); |
| 558 MediaControlDivElement::acceptHeapVisitor(visitor); | 561 MediaControlDivElement::acceptHeapVisitor(visitor); |
| 559 } | 562 } |
| 560 | 563 |
| 561 void MediaControlClosedCaptionsTrackListElement::defaultEventHandler(Event* even
t) | 564 void MediaControlClosedCaptionsTrackListElement::defaultEventHandler(Event* even
t) |
| 562 { | 565 { |
| 563 if (event->type() == eventNames().clickEvent) { | 566 if (event->type() == eventNames().clickEvent) { |
| 564 Node* target = event->target()->toNode(); | 567 Node* target = event->target()->toNode(); |
| 565 if (!target || !target->isElementNode()) | 568 if (!target || !target->isElementNode()) |
| 566 return; | 569 return; |
| 567 | 570 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 616 TextTrackList* trackList = mediaElement->textTracks(); | 619 TextTrackList* trackList = mediaElement->textTracks(); |
| 617 | 620 |
| 618 if (!trackList || !trackList->length()) | 621 if (!trackList || !trackList->length()) |
| 619 return; | 622 return; |
| 620 | 623 |
| 621 if (m_trackListHasChanged) | 624 if (m_trackListHasChanged) |
| 622 rebuildTrackListMenu(); | 625 rebuildTrackListMenu(); |
| 623 | 626 |
| 624 bool captionsVisible = mediaElement->closedCaptionsVisible(); | 627 bool captionsVisible = mediaElement->closedCaptionsVisible(); |
| 625 for (unsigned i = 0, length = m_menuItems.size(); i < length; ++i) { | 628 for (unsigned i = 0, length = m_menuItems.size(); i < length; ++i) { |
| 626 RefPtr<Element> trackItem = m_menuItems[i]; | 629 Handle<Element> trackItem = m_menuItems[i]; |
| 627 | 630 |
| 628 int trackIndex = trackListIndexForElement(trackItem.get()); | 631 int trackIndex = trackListIndexForElement(trackItem.raw()); |
| 629 if (trackIndex == HTMLMediaElement::textTracksIndexNotFound()) | 632 if (trackIndex == HTMLMediaElement::textTracksIndexNotFound()) |
| 630 continue; | 633 continue; |
| 631 | 634 |
| 632 if (trackIndex == HTMLMediaElement::textTracksOffIndex()) { | 635 if (trackIndex == HTMLMediaElement::textTracksOffIndex()) { |
| 633 if (captionsVisible) | 636 if (captionsVisible) |
| 634 trackItem->classList()->remove(selectedClassValue, ASSERT_NO_EXC
EPTION); | 637 trackItem->classList()->remove(selectedClassValue, ASSERT_NO_EXC
EPTION); |
| 635 else | 638 else |
| 636 trackItem->classList()->add(selectedClassValue, ASSERT_NO_EXCEPT
ION); | 639 trackItem->classList()->add(selectedClassValue, ASSERT_NO_EXCEPT
ION); |
| 637 continue; | 640 continue; |
| 638 } | 641 } |
| 639 | 642 |
| 640 RefPtr<TextTrack> textTrack; | 643 RefPtr<TextTrack> textTrack; |
| 641 MenuItemToTrackMap::iterator iter = m_menuToTrackMap.find(trackItem.get(
)); | 644 MenuItemToTrackMap::iterator iter = m_menuToTrackMap.find(trackItem.raw(
)); |
| 642 if (iter == m_menuToTrackMap.end()) | 645 if (iter == m_menuToTrackMap.end()) |
| 643 continue; | 646 continue; |
| 644 textTrack = iter->value; | 647 textTrack = iter->value; |
| 645 if (!textTrack) | 648 if (!textTrack) |
| 646 continue; | 649 continue; |
| 647 if (textTrack->mode() == TextTrack::showingKeyword()) | 650 if (textTrack->mode() == TextTrack::showingKeyword()) |
| 648 trackItem->classList()->add(selectedClassValue, ASSERT_NO_EXCEPTION)
; | 651 trackItem->classList()->add(selectedClassValue, ASSERT_NO_EXCEPTION)
; |
| 649 else | 652 else |
| 650 trackItem->classList()->remove(selectedClassValue, ASSERT_NO_EXCEPTI
ON); | 653 trackItem->classList()->remove(selectedClassValue, ASSERT_NO_EXCEPTI
ON); |
| 651 } | 654 } |
| (...skipping 26 matching lines...) Expand all Loading... |
| 678 RefPtr<Element> captionsHeader = doc->createElement(h3Tag, ASSERT_NO_EXCEPTI
ON); | 681 RefPtr<Element> captionsHeader = doc->createElement(h3Tag, ASSERT_NO_EXCEPTI
ON); |
| 679 captionsHeader->appendChild(doc->createTextNode(textTrackSubtitlesText())); | 682 captionsHeader->appendChild(doc->createTextNode(textTrackSubtitlesText())); |
| 680 appendChild(captionsHeader); | 683 appendChild(captionsHeader); |
| 681 RefPtr<Element> captionsMenuList = doc->createElement(ulTag, ASSERT_NO_EXCEP
TION); | 684 RefPtr<Element> captionsMenuList = doc->createElement(ulTag, ASSERT_NO_EXCEP
TION); |
| 682 | 685 |
| 683 RefPtr<Element> menuItem; | 686 RefPtr<Element> menuItem; |
| 684 menuItem = doc->createElement(liTag, ASSERT_NO_EXCEPTION); | 687 menuItem = doc->createElement(liTag, ASSERT_NO_EXCEPTION); |
| 685 menuItem->appendChild(doc->createTextNode(textTrackOffText())); | 688 menuItem->appendChild(doc->createTextNode(textTrackOffText())); |
| 686 menuItem->setAttribute(trackIndexAttributeName(), textTracksOffAttrValue, AS
SERT_NO_EXCEPTION); | 689 menuItem->setAttribute(trackIndexAttributeName(), textTracksOffAttrValue, AS
SERT_NO_EXCEPTION); |
| 687 captionsMenuList->appendChild(menuItem); | 690 captionsMenuList->appendChild(menuItem); |
| 688 m_menuItems.append(menuItem); | 691 m_menuItems.append(Handle<Element>(menuItem.get())); |
| 689 | 692 |
| 690 for (unsigned i = 0, length = tracksForMenu.size(); i < length; ++i) { | 693 for (unsigned i = 0, length = tracksForMenu.size(); i < length; ++i) { |
| 691 RefPtr<TextTrack> textTrack = tracksForMenu[i]; | 694 RefPtr<TextTrack> textTrack = tracksForMenu[i]; |
| 692 menuItem = doc->createElement(liTag, ASSERT_NO_EXCEPTION); | 695 menuItem = doc->createElement(liTag, ASSERT_NO_EXCEPTION); |
| 693 | 696 |
| 694 // Add a custom attribute to the <li> element which will allow | 697 // Add a custom attribute to the <li> element which will allow |
| 695 // us to easily associate the user tapping here with the | 698 // us to easily associate the user tapping here with the |
| 696 // track. Since this list is rebuilt if the tracks change, we | 699 // track. Since this list is rebuilt if the tracks change, we |
| 697 // should always be in sync. | 700 // should always be in sync. |
| 698 menuItem->setAttribute(trackIndexAttributeName(), String::number(i), ASS
ERT_NO_EXCEPTION); | 701 menuItem->setAttribute(trackIndexAttributeName(), String::number(i), ASS
ERT_NO_EXCEPTION); |
| 699 | 702 |
| 700 menuItem->appendChild(doc->createTextNode(captionsUserPreferences->displ
ayNameForTrack(textTrack.get()))); | 703 menuItem->appendChild(doc->createTextNode(captionsUserPreferences->displ
ayNameForTrack(textTrack.get()))); |
| 701 | 704 |
| 702 captionsMenuList->appendChild(menuItem); | 705 captionsMenuList->appendChild(menuItem); |
| 703 m_menuItems.append(menuItem); | 706 m_menuItems.append(Handle<Element>(menuItem.get())); |
| 704 m_menuToTrackMap.add(menuItem, textTrack); | 707 m_menuToTrackMap.add(menuItem, textTrack); |
| 705 } | 708 } |
| 706 | 709 |
| 707 appendChild(captionsMenuList); | 710 appendChild(captionsMenuList); |
| 708 | 711 |
| 709 updateDisplay(); | 712 updateDisplay(); |
| 710 } | 713 } |
| 711 | 714 |
| 712 // ---------------------------- | 715 // ---------------------------- |
| 713 | 716 |
| 714 MediaControlTimelineElement::MediaControlTimelineElement(Handle<Document> docume
nt, MediaControls* controls) | 717 MediaControlTimelineElement::MediaControlTimelineElement(Handle<Document> docume
nt, MediaControls* controls) |
| 715 : MediaControlInputElement(document, MediaSlider) | 718 : MediaControlInputElement(document, MediaSlider) |
| 716 , m_controls(controls) | 719 , m_controls(controls) |
| 717 { | 720 { |
| 718 } | 721 } |
| 719 | 722 |
| 720 Result<MediaControlTimelineElement> MediaControlTimelineElement::create(Handle<D
ocument> document, MediaControls* controls) | 723 Result<MediaControlTimelineElement> MediaControlTimelineElement::create(Handle<D
ocument> document, MediaControls* controls) |
| 721 { | 724 { |
| 722 ASSERT(controls); | 725 ASSERT(controls); |
| 723 | 726 |
| 724 Handle<MediaControlTimelineElement> timeline = adoptTreeShared(new MediaCont
rolTimelineElement(document, controls)); | 727 Handle<MediaControlTimelineElement> timeline = adoptTreeShared(new MediaCont
rolTimelineElement(document, controls)); |
| 725 timeline->ensureUserAgentShadowRoot(); | 728 timeline->ensureUserAgentShadowRoot(); |
| 726 timeline->setType("range"); | 729 timeline->setType("range"); |
| 727 timeline->setAttribute(precisionAttr, "float"); | 730 timeline->setAttribute(precisionAttr, "float"); |
| 728 return timeline; | 731 return timeline; |
| 729 } | 732 } |
| 730 | 733 |
| 731 void MediaControlTimelineElement::acceptHeapVisitor(Visitor* visitor) const | 734 void MediaControlTimelineElement::acceptHeapVisitor(Visitor* visitor) const |
| 732 { | 735 { |
| 736 visitor->visit(m_controls); |
| 733 MediaControlInputElement::acceptHeapVisitor(visitor); | 737 MediaControlInputElement::acceptHeapVisitor(visitor); |
| 734 } | 738 } |
| 735 | 739 |
| 736 void MediaControlTimelineElement::defaultEventHandler(Event* event) | 740 void MediaControlTimelineElement::defaultEventHandler(Event* event) |
| 737 { | 741 { |
| 738 // Left button is 0. Rejects mouse events not from left button. | 742 // Left button is 0. Rejects mouse events not from left button. |
| 739 if (event->isMouseEvent() && static_cast<MouseEvent*>(event)->button()) | 743 if (event->isMouseEvent() && static_cast<MouseEvent*>(event)->button()) |
| 740 return; | 744 return; |
| 741 | 745 |
| 742 if (!attached()) | 746 if (!attached()) |
| (...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1123 } | 1127 } |
| 1124 | 1128 |
| 1125 void MediaControlTextTrackContainerElement::textTrackRepresentationBoundsChanged
(const IntRect&) | 1129 void MediaControlTextTrackContainerElement::textTrackRepresentationBoundsChanged
(const IntRect&) |
| 1126 { | 1130 { |
| 1127 updateSizes(); | 1131 updateSizes(); |
| 1128 } | 1132 } |
| 1129 | 1133 |
| 1130 // ---------------------------- | 1134 // ---------------------------- |
| 1131 | 1135 |
| 1132 } // namespace WebCore | 1136 } // namespace WebCore |
| OLD | NEW |