blob: 8f8b5b8293497e85470b219935daad201f6993de [file] [log] [blame]
// Copyright 2015 The Cobalt 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.
#include "cobalt/dom/dom_parser.h"
#include <memory>
#include <string>
#include "base/threading/platform_thread.h"
#include "cobalt/dom/document.h"
#include "cobalt/dom/html_element_context.h"
#include "cobalt/dom/testing/stub_css_parser.h"
#include "cobalt/dom/testing/stub_environment_settings.h"
#include "cobalt/dom/testing/stub_script_runner.h"
#include "cobalt/dom_parser/parser.h"
#include "cobalt/loader/fetcher_factory.h"
#include "cobalt/loader/loader_factory.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace cobalt {
namespace dom {
class DOMParserTest : public ::testing::Test {
protected:
DOMParserTest();
~DOMParserTest() override {}
testing::StubEnvironmentSettings environment_settings_;
base::NullDebuggerHooks null_debugger_hooks_;
loader::FetcherFactory fetcher_factory_;
loader::LoaderFactory loader_factory_;
testing::StubCSSParser stub_css_parser_;
std::unique_ptr<dom_parser::Parser> dom_parser_parser_;
testing::StubScriptRunner stub_script_runner_;
HTMLElementContext html_element_context_;
scoped_refptr<DOMParser> dom_parser_;
};
DOMParserTest::DOMParserTest()
: fetcher_factory_(NULL /* network_module */),
loader_factory_("Test" /* name */, &fetcher_factory_,
NULL /* resource provider */, null_debugger_hooks_,
0 /* encoded_image_cache_capacity */,
base::ThreadPriority::DEFAULT),
dom_parser_parser_(new dom_parser::Parser()),
html_element_context_(
&environment_settings_, &fetcher_factory_, &loader_factory_,
&stub_css_parser_, dom_parser_parser_.get(),
NULL /* can_play_type_handler */, NULL /* web_media_player_factory */,
&stub_script_runner_, NULL /* script_value_factory */,
NULL /* media_source_registry */, NULL /* resource_provider */,
NULL /* animated_image_tracker */, NULL /* image_cache */,
NULL /* reduced_image_cache_capacity_manager */,
NULL /* remote_typeface_cache */, NULL /* mesh_cache */,
NULL /* dom_stat_tracker */, "" /* language */,
base::kApplicationStateStarted,
NULL /* synchronous_loader_interrupt */),
dom_parser_(new DOMParser(&html_element_context_)) {}
TEST_F(DOMParserTest, ParsesXML) {
const std::string input =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<MPD xmlns:xsi=\"https://www.w3.org/2001/XMLSchema-instance\""
" xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
" xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\">\n"
" <Period>\n"
" <SegmentList>\n"
" <Initialization sourceURL=\"mp4-main-multi-h264bl_full-.mp4\""
" range=\"0-591\"/>\n"
" <SegmentURL media=\"mp4-main-multi-h264bl_full-1.m4s\""
" mediaRange=\"592-\"/>\n"
" <SegmentURL media=\"mp4-main-multi-h264bl_full-2.m4s\"/>\n"
" </SegmentList>\n"
" </Period>\n"
"</MPD>\n";
scoped_refptr<Document> document =
dom_parser_->ParseFromString(input, kDOMParserSupportedTypeTextXml);
EXPECT_TRUE(document->IsXMLDocument());
}
} // namespace dom
} // namespace cobalt