Home | History | Annotate | Download | only in webdriver
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/test/webdriver/frame_path.h"
      6 
      7 #include "base/strings/string_split.h"
      8 
      9 namespace webdriver {
     10 
     11 FramePath::FramePath() {}
     12 
     13 FramePath::FramePath(const FramePath& other) : path_(other.path_) {}
     14 
     15 FramePath::FramePath(const std::string& path) : path_(path) {}
     16 
     17 FramePath::~FramePath() {}
     18 
     19 FramePath& FramePath::operator=(const FramePath& other) {
     20   path_ = other.path_;
     21   return *this;
     22 }
     23 
     24 bool FramePath::operator==(const FramePath& other) const {
     25   return path_ == other.path_;
     26 }
     27 
     28 FramePath FramePath::Append(const FramePath& path) const {
     29   return Append(path.path_);
     30 }
     31 
     32 FramePath FramePath::Append(const std::string& path) const {
     33   // An empty path refers to the root frame, so just return it.
     34   if (path.empty())
     35     return *this;
     36 
     37   // Don't append a separator if the current path is empty.
     38   std::string new_path = path_;
     39   if (path_.length())
     40     new_path += "\n";
     41   return FramePath(new_path + path);
     42 }
     43 
     44 FramePath FramePath::Parent() const {
     45   size_t i = path_.find_last_of("\n");
     46   if (i != std::string::npos)
     47     return FramePath(path_.substr(0, i));
     48   return FramePath();
     49 }
     50 
     51 FramePath FramePath::BaseName() const {
     52   size_t i = path_.find_last_of("\n");
     53   if (i != std::string::npos)
     54     return FramePath(path_.substr(i + 1));
     55   return *this;
     56 }
     57 
     58 void FramePath::GetComponents(std::vector<std::string>* components) const {
     59   if (IsSubframe())
     60     base::SplitString(path_, '\n', components);
     61 }
     62 
     63 bool FramePath::IsRootFrame() const {
     64   return path_.empty();
     65 }
     66 
     67 bool FramePath::IsSubframe() const {
     68   return path_.length();
     69 }
     70 
     71 const std::string& FramePath::value() const {
     72   return path_;
     73 }
     74 
     75 }  // namespace webdriver
     76