12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROME_BROWSER_EXTENSIONS_API_MESSAGING_NATIVE_MESSAGING_TEST_UTIL_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_BROWSER_EXTENSIONS_API_MESSAGING_NATIVE_MESSAGING_TEST_UTIL_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/files/scoped_temp_dir.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_WIN) 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/test/test_reg_util_win.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#else 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/test/scoped_path_override.h" 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Helper class for native messaging tests. When RegisterTestHost() is called it 20c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// creates the following manifest files: 21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// kHostName ("com.google.chrome.test.echo") - Echo NM host that runs, see 22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// chrome/test/data/native_messaging/native_hosts/echo.py . 23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// kBinaryMissingHostName ("com.google.chrome.test.host_binary_missing") - 24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Manifest file that points to a nonexistent host binary. 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ScopedTestNativeMessagingHost { 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public: 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static const char kHostName[]; 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch static const char kBinaryMissingHostName[]; 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static const char kExtensionId[]; 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ScopedTestNativeMessagingHost(); 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ~ScopedTestNativeMessagingHost(); 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void RegisterTestHost(bool user_level); 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private: 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ScopedTempDir temp_dir_; 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_WIN) 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) registry_util::RegistryOverrideManager registry_override_; 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#else 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<base::ScopedPathOverride> path_override_; 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ScopedTestNativeMessagingHost); 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace extensions 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROME_BROWSER_EXTENSIONS_API_MESSAGING_NATIVE_MESSAGING_TEST_UTIL_H_ 51