blob: bed0ad7d54fd09b8af4e15cfa79cb9b20b7912d7 [file] [log] [blame] [edit]
// <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();
}
}