Path: blob/trunk/dotnet/test/common/Environment/InlinePage.cs
2868 views
// <copyright file="InlinePage.cs" company="Selenium Committers"> // Licensed to the Software Freedom Conservancy (SFC) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The SFC licenses this file // to you 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. // </copyright> using System.Collections.Generic; using System.Text; namespace OpenQA.Selenium.Environment; public class InlinePage { private string title = string.Empty; private List<string> scripts = new List<string>(); private List<string> styles = new List<string>(); private List<string> bodyParts = new List<string>(); private string onLoad; private string onBeforeUnload; public InlinePage WithTitle(string title) { this.title = title; return this; } public InlinePage WithScripts(params string[] scripts) { this.scripts.AddRange(scripts); return this; } public InlinePage WithStyles(params string[] styles) { this.styles.AddRange(styles); return this; } public InlinePage WithBody(params string[] bodyParts) { this.bodyParts.AddRange(bodyParts); return this; } public InlinePage WithOnLoad(string onLoad) { this.onLoad = onLoad; return this; } public InlinePage WithOnBeforeUnload(string onBeforeUnload) { this.onBeforeUnload = onBeforeUnload; return this; } public override string ToString() { StringBuilder builder = new StringBuilder("<html>"); builder.Append("<head>"); builder.AppendFormat("<title>{0}</title>", this.title); builder.Append("</head>"); builder.Append("<script type='text/javascript'>"); foreach (string script in this.scripts) { builder.Append(script).Append("\n"); } builder.Append("</script>"); builder.Append("<style>"); foreach (string style in this.styles) { builder.Append(style).Append("\n"); } builder.Append("</style>"); builder.Append("<body"); if (!string.IsNullOrEmpty(this.onLoad)) { builder.AppendFormat(" onload='{0}'", this.onLoad); } if (!string.IsNullOrEmpty(this.onBeforeUnload)) { builder.AppendFormat(" onbeforeunload='{0}'", this.onBeforeUnload); } builder.Append(">"); foreach (string bodyPart in this.bodyParts) { builder.Append(bodyPart).Append("\n"); } builder.Append("</body>"); builder.Append("</html>"); return builder.ToString(); } }