Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010, Google Inc. All rights reserved. | 2 * Copyright (C) 2010, Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 25 #include "modules/webaudio/AbstractAudioContext.h" | 25 #include "modules/webaudio/AbstractAudioContext.h" |
| 26 #include "bindings/core/v8/Dictionary.h" | 26 #include "bindings/core/v8/Dictionary.h" |
| 27 #include "bindings/core/v8/ExceptionMessages.h" | 27 #include "bindings/core/v8/ExceptionMessages.h" |
| 28 #include "bindings/core/v8/ExceptionState.h" | 28 #include "bindings/core/v8/ExceptionState.h" |
| 29 #include "bindings/core/v8/ScriptPromiseResolver.h" | 29 #include "bindings/core/v8/ScriptPromiseResolver.h" |
| 30 #include "bindings/core/v8/ScriptState.h" | 30 #include "bindings/core/v8/ScriptState.h" |
| 31 #include "core/dom/DOMException.h" | 31 #include "core/dom/DOMException.h" |
| 32 #include "core/dom/Document.h" | 32 #include "core/dom/Document.h" |
| 33 #include "core/dom/ExceptionCode.h" | 33 #include "core/dom/ExceptionCode.h" |
| 34 #include "core/dom/ExecutionContextTask.h" | 34 #include "core/dom/ExecutionContextTask.h" |
| 35 #include "core/frame/LocalDOMWindow.h" | |
| 35 #include "core/frame/Settings.h" | 36 #include "core/frame/Settings.h" |
| 36 #include "core/html/HTMLMediaElement.h" | 37 #include "core/html/HTMLMediaElement.h" |
| 38 #include "core/timing/DOMWindowPerformance.h" | |
| 39 #include "core/timing/Performance.h" | |
| 37 #include "modules/mediastream/MediaStream.h" | 40 #include "modules/mediastream/MediaStream.h" |
| 38 #include "modules/webaudio/AnalyserNode.h" | 41 #include "modules/webaudio/AnalyserNode.h" |
| 39 #include "modules/webaudio/AudioBuffer.h" | 42 #include "modules/webaudio/AudioBuffer.h" |
| 40 #include "modules/webaudio/AudioBufferCallback.h" | 43 #include "modules/webaudio/AudioBufferCallback.h" |
| 41 #include "modules/webaudio/AudioBufferSourceNode.h" | 44 #include "modules/webaudio/AudioBufferSourceNode.h" |
| 42 #include "modules/webaudio/AudioContext.h" | 45 #include "modules/webaudio/AudioContext.h" |
| 43 #include "modules/webaudio/AudioListener.h" | 46 #include "modules/webaudio/AudioListener.h" |
| 44 #include "modules/webaudio/AudioNodeInput.h" | 47 #include "modules/webaudio/AudioNodeInput.h" |
| 45 #include "modules/webaudio/AudioNodeOutput.h" | 48 #include "modules/webaudio/AudioNodeOutput.h" |
| 49 #include "modules/webaudio/AudioTimestamp.h" | |
| 46 #include "modules/webaudio/BiquadFilterNode.h" | 50 #include "modules/webaudio/BiquadFilterNode.h" |
| 47 #include "modules/webaudio/ChannelMergerNode.h" | 51 #include "modules/webaudio/ChannelMergerNode.h" |
| 48 #include "modules/webaudio/ChannelSplitterNode.h" | 52 #include "modules/webaudio/ChannelSplitterNode.h" |
| 49 #include "modules/webaudio/ConvolverNode.h" | 53 #include "modules/webaudio/ConvolverNode.h" |
| 50 #include "modules/webaudio/DefaultAudioDestinationNode.h" | 54 #include "modules/webaudio/DefaultAudioDestinationNode.h" |
| 51 #include "modules/webaudio/DelayNode.h" | 55 #include "modules/webaudio/DelayNode.h" |
| 52 #include "modules/webaudio/DynamicsCompressorNode.h" | 56 #include "modules/webaudio/DynamicsCompressorNode.h" |
| 53 #include "modules/webaudio/GainNode.h" | 57 #include "modules/webaudio/GainNode.h" |
| 54 #include "modules/webaudio/IIRFilterNode.h" | 58 #include "modules/webaudio/IIRFilterNode.h" |
| 55 #include "modules/webaudio/MediaElementAudioSourceNode.h" | 59 #include "modules/webaudio/MediaElementAudioSourceNode.h" |
| (...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 553 return; | 557 return; |
| 554 } | 558 } |
| 555 if (!UserGestureIndicator::processingUserGesture()) { | 559 if (!UserGestureIndicator::processingUserGesture()) { |
| 556 userGestureHistogram.count(UserGestureRequiredAndNotAvailable); | 560 userGestureHistogram.count(UserGestureRequiredAndNotAvailable); |
| 557 return; | 561 return; |
| 558 } | 562 } |
| 559 userGestureHistogram.count(UserGestureRequiredAndAvailable); | 563 userGestureHistogram.count(UserGestureRequiredAndAvailable); |
| 560 m_userGestureRequired = false; | 564 m_userGestureRequired = false; |
| 561 } | 565 } |
| 562 | 566 |
| 567 static double toPerformanceTime(ExecutionContext* context, double seconds) | |
| 568 { | |
| 569 LocalDOMWindow* window = context ? context->executingWindow() : nullptr; | |
|
Raymond Toy
2016/06/14 16:42:40
Why not just early return with 0.0 if the context
Mikhail
2016/06/17 09:36:57
Done.
| |
| 570 Performance* performance = window ? DOMWindowPerformance::performance(*windo w) : nullptr; | |
| 571 return performance ? performance->monotonicTimeToDOMHighResTimeStamp(seconds ) : 0.0; | |
| 572 } | |
| 573 | |
| 574 void AbstractAudioContext::getOutputTimestamp(AudioTimestamp& result) | |
| 575 { | |
| 576 if (!m_destinationNode) { | |
| 577 result.setContextTime(0.0); | |
| 578 result.setPerformanceTime(0.0); | |
| 579 return; | |
| 580 } | |
| 581 AudioDestinationHandler& destinationHandler = m_destinationNode->audioDestin ationHandler(); | |
| 582 | |
| 583 WebAudioTimestamp outputTimestamp = destinationHandler.outputTimestamp(); | |
| 584 double contextTime = outputTimestamp.frames / static_cast<double>(destinatio nHandler.sampleRate()); | |
| 585 double performanceTime = outputTimestamp.seconds ? toPerformanceTime(getExec utionContext(), outputTimestamp.seconds) : 0.0; | |
| 586 | |
| 587 result.setContextTime(contextTime); | |
| 588 result.setPerformanceTime(performanceTime); | |
| 589 } | |
| 590 | |
| 563 String AbstractAudioContext::state() const | 591 String AbstractAudioContext::state() const |
| 564 { | 592 { |
| 565 // These strings had better match the strings for AudioContextState in Audio Context.idl. | 593 // These strings had better match the strings for AudioContextState in Audio Context.idl. |
| 566 switch (m_contextState) { | 594 switch (m_contextState) { |
| 567 case Suspended: | 595 case Suspended: |
| 568 return "suspended"; | 596 return "suspended"; |
| 569 case Running: | 597 case Running: |
| 570 return "running"; | 598 return "running"; |
| 571 case Closed: | 599 case Closed: |
| 572 return "closed"; | 600 return "closed"; |
| (...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 830 | 858 |
| 831 SecurityOrigin* AbstractAudioContext::getSecurityOrigin() const | 859 SecurityOrigin* AbstractAudioContext::getSecurityOrigin() const |
| 832 { | 860 { |
| 833 if (getExecutionContext()) | 861 if (getExecutionContext()) |
| 834 return getExecutionContext()->getSecurityOrigin(); | 862 return getExecutionContext()->getSecurityOrigin(); |
| 835 | 863 |
| 836 return nullptr; | 864 return nullptr; |
| 837 } | 865 } |
| 838 | 866 |
| 839 } // namespace blink | 867 } // namespace blink |
| OLD | NEW |