| Index: chrome/renderer/greasemonkey_slave.h | 
| =================================================================== | 
| --- chrome/renderer/greasemonkey_slave.h	(revision 0) | 
| +++ chrome/renderer/greasemonkey_slave.h	(revision 0) | 
| @@ -0,0 +1,62 @@ | 
| +// Copyright (c) 2008 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. | 
| + | 
| +#ifndef CHROME_RENDERER_GREASEMONKEY_SLAVE_H__ | 
| +#define CHROME_RENDERER_GREASEMONKEY_SLAVE_H__ | 
| + | 
| +#include <vector> | 
| + | 
| +#include "base/scoped_ptr.h" | 
| +#include "base/shared_memory.h" | 
| +#include "base/string_piece.h" | 
| +#include "webkit/glue/webframe.h" | 
| + | 
| +// Parsed representation of a Greasemonkey script. | 
| +class GreasemonkeyScript { | 
| + public: | 
| +  // TODO(aa): Pass in filename script came from, for errors. Needs to be in | 
| +  // shared memory. | 
| +  GreasemonkeyScript() {} | 
| + | 
| +  const StringPiece& GetBody() const { | 
| +    return body_; | 
| +  } | 
| + | 
| +  bool Parse(const StringPiece& script_text) { | 
| +    // TODO(aa): Parse out includes, convert to regexes. | 
| +    body_ = script_text; | 
| +    return true; | 
| +  } | 
| + | 
| + private: | 
| +  // References the body of the script in shared memory. The underlying memory | 
| +  // is valid until shared_memory_ is either deleted or Unmap()'d. | 
| +  StringPiece body_; | 
| +}; | 
| + | 
| + | 
| +// Manages installed GreasemonkeyScripts for a render process. | 
| +class GreasemonkeySlave { | 
| + public: | 
| +  GreasemonkeySlave(); | 
| + | 
| +  // Update the parsed scripts from shared memory. | 
| +  bool UpdateScripts(SharedMemoryHandle shared_memory); | 
| + | 
| +  // Inject the appropriate scripts into a frame based on its URL. | 
| +  // TODO(aa): Extract a GreasemonkeyFrame interface out of this to improve | 
| +  // testability. | 
| +  bool InjectScripts(WebFrame* frame); | 
| + | 
| + private: | 
| +  // Shared memory containing raw script data. | 
| +  scoped_ptr<SharedMemory> shared_memory_; | 
| + | 
| +  // Parsed script data. | 
| +  std::vector<GreasemonkeyScript> scripts_; | 
| + | 
| +  DISALLOW_COPY_AND_ASSIGN(GreasemonkeySlave); | 
| +}; | 
| + | 
| +#endif // CHROME_RENDERER_GREASEMONKEY_SLAVE_H__ | 
|  |