14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/values.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/test/test_browser_context.h" 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "extensions/browser/api/api_resource_manager.h" 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "extensions/browser/api/socket/socket.h" 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "extensions/browser/api/socket/tcp_socket.h" 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "extensions/browser/api/sockets_tcp/sockets_tcp_api.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/api_unittest.h" 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace extensions { 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace core_api { 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)static KeyedService* ApiResourceManagerTestFactory( 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* context) { 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) content::BrowserThread::ID id; 214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) CHECK(content::BrowserThread::GetCurrentThreadIdentifier(&id)); 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return ApiResourceManager< 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ResumableTCPSocket>::CreateApiResourceManagerForTest(context, id); 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass SocketsTcpUnitTest : public ApiUnitTest { 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public: 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void SetUp() { 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ApiUnitTest::SetUp(); 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ApiResourceManager<ResumableTCPSocket>::GetFactoryInstance() 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ->SetTestingFactoryAndUse(browser_context(), 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ApiResourceManagerTestFactory); 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SocketsTcpUnitTest, Create) { 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Get BrowserThread 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) content::BrowserThread::ID id; 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) CHECK(content::BrowserThread::GetCurrentThreadIdentifier(&id)); 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Create SocketCreateFunction and put it on BrowserThread 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SocketsTcpCreateFunction* function = new SocketsTcpCreateFunction(); 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) function->set_work_thread_id(id); 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Run tests 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<base::DictionaryValue> result(RunFunctionAndReturnDictionary( 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) function, "[{\"persistent\": true, \"name\": \"foo\"}]")); 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(result.get()); 504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} // namespace core_api 534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace extensions 54