blob: fd45a8d21c6415c5d443e57fa8f83336e0122ed5 [file] [log] [blame]
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/test/webdriver/frame_path.h"
#include "base/strings/string_split.h"
namespace webdriver {
FramePath::FramePath() {}
FramePath::FramePath(const FramePath& other) : path_(other.path_) {}
FramePath::FramePath(const std::string& path) : path_(path) {}
FramePath::~FramePath() {}
FramePath& FramePath::operator=(const FramePath& other) {
path_ = other.path_;
return *this;
}
bool FramePath::operator==(const FramePath& other) const {
return path_ == other.path_;
}
FramePath FramePath::Append(const FramePath& path) const {
return Append(path.path_);
}
FramePath FramePath::Append(const std::string& path) const {
// An empty path refers to the root frame, so just return it.
if (path.empty())
return *this;
// Don't append a separator if the current path is empty.
std::string new_path = path_;
if (path_.length())
new_path += "\n";
return FramePath(new_path + path);
}
FramePath FramePath::Parent() const {
size_t i = path_.find_last_of("\n");
if (i != std::string::npos)
return FramePath(path_.substr(0, i));
return FramePath();
}
FramePath FramePath::BaseName() const {
size_t i = path_.find_last_of("\n");
if (i != std::string::npos)
return FramePath(path_.substr(i + 1));
return *this;
}
void FramePath::GetComponents(std::vector<std::string>* components) const {
if (IsSubframe())
base::SplitString(path_, '\n', components);
}
bool FramePath::IsRootFrame() const {
return path_.empty();
}
bool FramePath::IsSubframe() const {
return path_.length();
}
const std::string& FramePath::value() const {
return path_;
}
} // namespace webdriver