// Copyright 2014 The Oppia Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS-IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/**
 * Directive for the MP4 Video rich-text component.
 *
 * IMPORTANT NOTE: The naming convention for customization args that are passed
 * into the directive is: the name of the parameter, followed by 'With',
 * followed by the name of the arg.
 */
oppia.directive('oppiaNoninteractiveVideoMp4', [
  '$sce', 'oppiaHtmlEscaper', function($sce, oppiaHtmlEscaper) {
    return {
      restrict: 'E',
      scope: {},
      templateUrl: 'richTextComponent/VideoMp4',
      controller: ['$scope', '$attrs', function($scope, $attrs) {
        $scope.videoUrl = $sce.trustAsResourceUrl(
          oppiaHtmlEscaper.escapedJsonToObj($attrs.videoUrlWithValue));
      }]
    };
  }
]);

// Copyright 2014 The Oppia Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS-IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/**
 * Directive for the MP4 Video rich-text component.
 *
 * IMPORTANT NOTE: The naming convention for customization args that are passed
 * into the directive is: the name of the parameter, followed by 'With',
 * followed by the name of the arg.
 */
oppia.directive('oppiaNoninteractiveVideoMp4', [
  '$sce', 'oppiaHtmlEscaper', function($sce, oppiaHtmlEscaper) {
    return {
      restrict: 'E',
      scope: {},
      templateUrl: 'richTextComponent/VideoMp4',
      controller: ['$scope', '$attrs', function($scope, $attrs) {
        // Chrome has a bug where HTML5 videos sometimes stay pending for a
        // long time. The randomParameter used here applies the fix in
        // http://stackoverflow.com/a/18858057.
        var randomParameter = new Date().getMilliseconds();
        $scope.videoUrl = $sce.trustAsResourceUrl(
          oppiaHtmlEscaper.escapedJsonToObj($attrs.videoUrlWithValue) +
          '?t=' + randomParameter);
      }]
    };
  }
]);

Fix Chrome bug causing HTML5 video requests to sometimes remain forever in the 'pending' state
Fix Chrome bug causing HTML5 video requests to sometimes remain forever in the 'pending' state
